为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查列表中的范围是否相同?

如何检查列表中的范围是否相同?

慕容3067478 2021-04-08 18:15:49
我想检查列表中的某个范围是否相同。例如:在一个列表中,我有[X,Y,X,X,X,Y,Y],我想查看第三,第四和第五个是否相同。我尝试了以下方法:list = ['X', 'Y', 'X', 'X', 'X', 'Y']for i in list, range(2,4):    if not i == 'X':        print("Test")它确实起作用,打印Test两次。TestTest我只是不想写很多这样的东西:if... ... and.... - and..... and... ... or.... - and... ...
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您正在循环,not list == 'X'然后进行测试not range(2, 4) == 'X';显然,两者都不相等,因此您要打印两次。但是,您的逻辑可以大大简化。如果目标是查看索引2、3和4是否相等,则只需将列表的该片转换为aset并检查长度是否为1:


mylist = ['X', 'Y', 'X', 'X', 'X', 'Y']  # Changed list name; naming the list "list" leads to tears

if len(set(mylist[2:5])) == 1:

    print("2, 3 and 4 equal")

else:

    print("At least one not equal to the others")

您可能还希望检查其mylist长度是否足够长(如果切片未获得预期的三个元素,切片将不会引发错误),因为这样编写只能测试列表的长度至少为3个元素以及索引2中的任何元素如果存在,则4等于。


查看完整回答
反对 回复 2021-04-27
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

我敢肯定有更优雅的方法可以做到这一点,但是您可以尝试:


def check_same(mylist, start_index, end_index):

    value = mylist[start_index]   

    for element in mylist[start_index + 1 : end_index]:

    if not element == value:

        return False

    return True


查看完整回答
反对 回复 2021-04-27
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信