python比较两个不同长度列表中的项目-顺序很重要
因此,在上面的列表中,只有索引0中的项目相同,而两个列表中的索引1到4不同。另外,python比较两个不同长度列表中的项目-顺序很重要,python,list,loops,for-loop,indexing,Python,List,Loops,For Loop,Indexing,因此,在上面的列表中,只有索引0中的项目相同,而两个列表中的索引1到4不同。另外,list_2还有一个额外的项目'c'。 我想计算两个列表中索引不同的次数,在这种情况下,我应该得到3 我试着这样做: list_1 = ['a', 'a', 'a', 'b'] list_2 = ['a', 'b', 'b', 'b', 'c'] 我犯了一个错误 使用将列表配对,计算所有差异,然后添加长度差异 zip();你知道这些都是不同的: x = 0 for i in max(len(list_1),len
list_2
还有一个额外的项目'c'
。
我想计算两个列表中索引不同的次数,在这种情况下,我应该得到3
我试着这样做:
list_1 = ['a', 'a', 'a', 'b']
list_2 = ['a', 'b', 'b', 'b', 'c']
我犯了一个错误 使用将列表配对,计算所有差异,然后添加长度差异
zip();你知道这些都是不同的:
x = 0
for i in max(len(list_1),len(list_2)):
if list_1[i]==list_2[i]:
continue
else:
x+=1
sum()
将True
和False
值相加;这是因为Python的boolean
类型是int
和False
等于0
,True
等于1
的子类。因此,对于每一对不同的元素,生成的值为True
=代码>测试加起来为1
s
演示:
如前所述,结果应该是3,如果列表中没有None
s,则zip\u longest
可以在这里提供帮助
>>> list_1 = ['a', 'a', 'a', 'b']
>>> list_2 = ['a', 'b', 'b', 'b', 'c']
>>> sum(a != b for a, b in zip(list_1, list_2))
2
>>> abs(len(list_1) - len(list_2))
1
>>> difference = sum(a != b for a, b in zip(list_1, list_2))
>>> difference += abs(len(list_1) - len(list_2))
>>> difference
3
我可以使用for循环尝试这种方法吗:
from itertools import zip_longest
list_1=['a', 'a', 'a', 'b']
list_2=['a', 'b', 'b', 'b', 'c']
x = sum(a != b for a,b in zip_longest(list_1,list_2))
您可以尝试以下方法:
>>> count = 0
>>> ls1 = ['a', 'a', 'a', 'b']
>>> ls2 = ['a', 'b', 'b', 'b', 'c']
>>> for i in range(0, max(len(ls1),len(ls2)), 1):
... if ls1[i:i+1] != ls2[i:i+1]:
... count += 1
...
>>> print count
3
>>>
或者尝试以下操作(未更改列表):
(输出:Difference=3
)不是更好,但这里有另一个选项
dif = 0
for i in range(len(min(list_1, list_2))):
if list_1[i]!=list_2[i]:
dif+=1
#print(list_1[i], " != ", list_2[i], " --> Dif = ", dif)
dif+=(len(max(list_1, list_2)) - len(min(list_1, list_2)))
print("Difference = ", dif)
如果len(a)
我想索引3中的元素也是一样的?应该得到三个;索引1和索引2处的项目不同,您有一个额外的元素。指数0和3处的元素相等。哦,是的,你是对的。输入错误。如果你能预先计算出你会在那里找到多少元素,为什么要在列表2
中迭代所有额外的元素呢。如果再多一个元素也没什么区别,但是如果有一百万呢?您可以简单地计算列表长度的差异。zip\u longest()
需要一个额外的参数,fillvalue
。将其设置为object()
,您就不必担心列表中的None
值了。@MartijnPieters确实,这是正确的。但是,如果您不想出于任何原因检查长度,或者也不想获得带有人工值的匹配条目,那么它可能是有价值的。
list1 = [1,2,3,5,7,8,23,24,25,32]
list2 = [5,3,4,21,201,51,4,5,9,12,32,23]
list3 = []
for i in range(len(list2)):
if list2[i] not in list1:
pass
else :
list3.append(list2[i])
print list3
print len(list3)
dif = 0
for i in range(len(min(list_1, list_2))):
if list_1[i]!=list_2[i]:
dif+=1
#print(list_1[i], " != ", list_2[i], " --> Dif = ", dif)
dif+=(len(max(list_1, list_2)) - len(min(list_1, list_2)))
print("Difference = ", dif)
if len(a) < len(b):
b = b[0:len(a)]
else:
a = a[0:len(b)]
correct = sum(a == b)