我被要求比较两个不同的字符串并返回不匹配的结果。如果一个字符串比另一个字符串长,则输出多余的字符。
characters1=list(contents1)
characters2=list(contents2)
for (a,b) in zip(characters1, characters2):
if a != b:
print('Mismatch at character', characters1.index(a), a, '!=', b)
这是我所做的,我无法弄清楚额外的部分。
最佳答案
我会使用itertools.izip_longest在这里,类似:
for idx, (a, b) in enumerate(izip_longest(s1, s2)):
if a and b:
if a != b:
print 'Mismatch at {0}: {1} != {2}'.format(idx, a, b)
else:
suffix = (s1 if a else s2)[idx:]
print 'Extra string: {0}'.format(suffix)
break
另请注意,index()
返回项目的第一个入口,因此如果该字符在字符串中重复,则可能会返回错误的结果。 enumerate是要走的路。将字符串转换为列表也是多余的,字符串已经是可迭代的。
关于python - 如何比较两个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453110/