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

2024-04-26 05:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想检查列表中的某个范围是否相同。例如: 在一个列表中我有[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")

它工作,打印两次。在

^{pr2}$

我只是不想写这么多:

if。。。and。。。。and。。。。。and。。。or。。。。and。。。在


Tags: orand方法intest列表forif
2条回答

循环是为了测试not list == 'X',然后是not range(2, 4) == 'X';显然,两者都不相等,所以要同时打印两次。你的逻辑可以大大简化。如果目标是查看索引2、3和4是否都相等,只需将列表的该部分转换为set,并检查长度是否为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的任何元素都是相等的(如果存在的话)。在

我相信有更优雅的方法可以做到这一点,但你可以试试:

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

相关问题 更多 >