代码之家  ›  专栏  ›  技术社区  ›  Matt

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

  •  2
  • Matt  · 技术社区  · 6 年前

    我有一个清单:

    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]
    

    在这里,它应该返回真,真,假,假

    list1和list2[n]的长度总是相同的,但是这个长度可以不同。

    1 回复  |  直到 6 年前
        1
  •  5
  •   Sunitha    6 年前

    使用 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]
    

    如果 列表1 列表2[n] 大小不等,更换 拉链 具有 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]