我正在尝试比较两个列表,并找到该位置上的变化字符和其位置。例如,这是两个列表:
list1 = ['I', 'C', 'A', 'N', 'R', 'U', 'N']
list2 = ['I', 'K', 'A', 'N', 'R', 'U', 'T']
我希望能够输出两个列表中的差异位置和变化。正如您所看到的,一个字母可以在不同的索引位置上重复多次。这是我尝试过的代码,但我似乎无法准确地打印出第二个位置。
for indexing in range(0, len(list1)):
if list1[indexing] != list2[indexing]:
dontuseindex = indexing
poschange = indexing + 1
changecharacter = list2[indexing]
for indexingagain in range(dontuseindex + 1, len(list1)):
if list1[indexingagain] != list2[indexingagain]:
secondposchange = indexingagain + 1
secondchangecharacter = list2[indexingagain]
有没有更好的解决方法或对我现有代码的任何建议?
我的期望输出应该是:
2 K
7 T
zip
并比较即可;如果是后者,则需要使用Levenshtein distance的变体。 - tobias_k[print(ix, *thing) for ix, thing in enumerate(map(set, zip(list1, list2))) if len(thing) == 2]
是唯一好的方法。 - DaveBensonPhillips1
和6
。 - Peter Wood