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)])]