Mat*_*att 2 python comparison list-comprehension
我有一个清单:
list1=[1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
我需要将其与一系列其他列表进行比较:
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]]
Run Code Online (Sandbox Code Playgroud)
并标记其中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]
Run Code Online (Sandbox Code Playgroud)
在这里,它应该返回TRUE,TRUE,FALSE,FALSE
list1和list2 [n]的长度始终相同,但此长度可能不同.
使用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]
Run Code Online (Sandbox Code Playgroud)
如果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]
Run Code Online (Sandbox Code Playgroud)