Python 比较两个列表中的每个元素

Python 比较两个列表中的每个元素,python,list,Python,List,我想比较两个列表(列表a和列表b) 例如: list a = [a1, a2, a3, a4, a5] list b = [b1, b2, b3, b4, b5] list 1 = [1, 2, 3, 4, 5] list 2 = [1, 7, 9, 4, 5] 如果我们有 a1 == b1 a2 == b2 a3 == b3 a4 == b4 a5 == b5 结果:5 其他例子: list a = [a1, a2, a3, a4, a5] list b = [b1, b2, b3

我想比较两个列表(列表a和列表b)

例如:

list a = [a1, a2, a3, a4, a5]

list b = [b1, b2, b3, b4, b5]
list 1 = [1, 2, 3, 4, 5]

list 2 = [1, 7, 9, 4, 5]
如果我们有

a1 == b1
a2 == b2
a3 == b3
a4 == b4
a5 == b5
结果:5

其他例子:

list a = [a1, a2, a3, a4, a5]

list b = [b1, b2, b3, b4, b5]
list 1 = [1, 2, 3, 4, 5]

list 2 = [1, 7, 9, 4, 5]
结果:3


有人能建议如何在python中执行此操作吗?

只需在两个列表上循环,并检查值是否相同:

list1 = [1, 2, 3, 4, 5]
list2 = [1, 7, 9, 4, 5]

same = 0
for i in range(len(list1)):  # assuming the lists are the same length
    if list1[i] == list2[i]:
        same += 1

print(same)

输出:
3

只需在两个列表上循环,并检查值是否相同:

list1 = [1, 2, 3, 4, 5]
list2 = [1, 7, 9, 4, 5]

same = 0
for i in range(len(list1)):  # assuming the lists are the same length
    if list1[i] == list2[i]:
        same += 1

print(same)

输出:
3

您可以使用生成器表达式

list1=[1,2,3,4,5]
列表2=[1,7,9,4,5]
num_equal=sum(i==j代表i,j在zip中(列表1,列表2))
打印(数量相等)#3
zip(list1,list2)
返回一个迭代器,该迭代器包含
list1
list2
中每个值的元组,基本上形成两个列表中的对应项对:

print(列表(zip)(列表1,列表2))#[(1,1)、(2,7)、(3,9)、(4,4)、(5,5)]
然后,您可以检查列表理解中的每一对是否相等,创建一个
True
False
列表:

print([i==j代表i,j在zip中(列表1,列表2)])#[True,False,False,True,True]

您可以将此列表的
sum
作为
True
转换为整数
1
False
转换为整数
0
。请注意,我们可以在
sum
调用中使用生成器表达式而不是列表理解(省略
[]
),以提高内存效率。

您可以使用生成器表达式

list1=[1,2,3,4,5]
列表2=[1,7,9,4,5]
num_equal=sum(i==j代表i,j在zip中(列表1,列表2))
打印(数量相等)#3
zip(list1,list2)
返回一个迭代器,该迭代器包含
list1
list2
中每个值的元组,基本上形成两个列表中的对应项对:

print(列表(zip)(列表1,列表2))#[(1,1)、(2,7)、(3,9)、(4,4)、(5,5)]
然后,您可以检查列表理解中的每一对是否相等,创建一个
True
False
列表:

print([i==j代表i,j在zip中(列表1,列表2)])#[True,False,False,True,True]

您可以将此列表的
sum
作为
True
转换为整数
1
False
转换为整数
0
。请注意,我们可以在
sum
调用中使用生成器表达式而不是列表理解(省略
[]
),以提高内存效率。

您可以使用不同的方法。如果两个数相等,则两个数都被子额定,值将为零。所以,我们可以计算零的值

注意:这种方法只适用于数字

In [13]: list(map(int.__sub__, list1, list2)).count(0)
Out[13]: 3

你可以用另一种方法。如果两个数相等,则两个数都被子额定,值将为零。所以,我们可以计算零的值

注意:这种方法只适用于数字

In [13]: list(map(int.__sub__, list1, list2)).count(0)
Out[13]: 3

最好省略
[]
并将生成器表达式传递给
sum
,以避免在内存中建立不必要的列表。你完全正确,我只是习惯于添加
[]
。我会补充你的建议!最好省略
[]
并将生成器表达式传递给
sum
,以避免在内存中建立不必要的列表。你完全正确,我只是习惯于添加
[]
。我会补充你的建议<代码>范围(len(…)有时是必需的,但这是一种代码气味。在这种情况下,它表示您可以达到。
范围(len(…)
有时是必要的,但这是一种代码气味。在这种情况下,它表示您可以达到。