猿问

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

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


Test

Test

我只是不想写很多这样的东西:


if... ... and.... - and..... and... ... or.... - and... ...


慕容3067478
浏览 175回答 2
2回答

眼眸繁星

您正在循环,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 tearsif 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
随时随地看视频慕课网APP

相关分类

Python
我要回答