我有一个列表:
list1=[1,2,3,4,5,6]
我需要将此与一系列其他列表进行比较:
list2=[[0,0,0,0,0,0],[0,1,2,3,4,5],[2,2,2,2,2,2],[5,4,3,2,1,0]]
并标记其中任何一个,其中list1中的每个值都大于list2中相应索引的值[n],即:
list1[0]>list2[n][0], list1[1]>list2[n][1], list1[2]>list2[n][2], list1[3]>list2[n][3], list1[4]>list2[n][4], list1[5]>list2[n][5]
此处,它应该返回TRUE,TRUE,FALSE,FALSE
list1和list2 [n]的长度始终相同,但是该长度可以不同。
答案 0 :(得分:5)
使用zip
并列出理解以从list1
和list2[n]
中获得一对元素,然后使用all
检查是否所有对(x,y), x> y
>>> list1=[1,2,3,4,5,6]
>>> list2=[[0,0,0,0,0,0],[0,1,2,3,4,5],[2,2,2,2,2,2],[5,4,3,2,1,0]]
>>> [all(x>y for x,y in zip(list1,lst)) for lst in list2]
[True, True, False, False]
如果list1
和list2[n]
的大小不相等,请将zip
替换为itertools.zip_longest
>>> from itertools import zip_longest
>>> [all(x>y for x,y in zip_longest(list1,lst, fillvalue=0)) for lst in list2]
[True, True, False, False]