将列表的每个元素与其在另一个元素中的对应索引进行比较

时间:2018-08-09 11:34:08

标签: python comparison list-comprehension

我有一个列表:

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]的长度始终相同,但是该长度可以不同。

1 个答案:

答案 0 :(得分:5)

使用zip并列出理解以从list1list2[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]

如果list1list2[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]