Python 比较两个列表中的元素
我有两个Python 比较两个列表中的元素,python,list,python-3.x,Python,List,Python 3.x,我有两个列表。假设一个是[6,4,2,1],另一个是[1,3,5,7]。我需要比较各个位置的元素(第一个列表的第一个元素与第二个列表的第一个元素进行比较)。我需要第三个列表,它可以告诉我第一个列表中有多少元素大于第二个列表中的元素。例如,当比较上述两个列表时,第三个列表应该类似于[2](因为6>1和4>3)。如何执行此操作您可以使用zip(…)和生成器执行此操作: sum(…)对元素求和,由于int(True)是1而int(False)是0,因此它计算x,y其中x>y的对数 通过使用列表理解,您
列表
。假设一个是[6,4,2,1]
,另一个是[1,3,5,7]
。我需要比较各个位置的元素(第一个列表的第一个元素与第二个列表的第一个元素进行比较)。我需要第三个列表
,它可以告诉我第一个列表中有多少元素大于第二个列表中的元素。例如,当比较上述两个列表时,第三个列表应该类似于[2]
(因为6>1
和4>3
)。如何执行此操作您可以使用zip(…)
和生成器执行此操作:
sum(…)
对元素求和,由于int(True)
是1
而int(False)
是0
,因此它计算x,y
其中x>y
的对数
通过使用列表理解,您可以稍微提高性能:
但是我真的不明白你为什么要构造一个列表,一个简单的整数就足够了。对布尔求和,从来都不喜欢。@Elmex80s:通常这工作得更快,因为你没有分支。有趣的是,你提到了这一点。可能会增加Python对
count\u true
和count\u false
函数的需求。@Elmex80s:但Python的思想通常是提供有限但非常通用的内置函数,可以对大量查询进行操作。这些函数可能会被放入(新)模块中。也许集合模块是合适的地方。编辑:它已经在那里了.count(True)
为什么要将结果包装在列表中?为什么[2]
而不是仅仅2
或例如[1,1,0,0]
?
list3 = [sum(x > y for x,y in zip(list1,list2))]
list3 = [sum([x > y for x,y in zip(list1,list2)])]