Python 比较两个列表中的每个元素
我想比较两个列表(列表a和列表b) 例如: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
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(…)
有时是必要的,但这是一种代码气味。在这种情况下,它表示您可以达到。