如何比较两个列表?

2024-09-30 08:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我被要求比较两个不同的字符串并返回dis匹配。如果一个字符串比另一个字符串长,则输出多余的字符。你知道吗

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)

这是我所做的,我不知道额外的部分。你知道吗


Tags: 字符串inforifzip字符atlist
3条回答

我会在这里使用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就是要走的路。将字符串转换为列表也是多余的,字符串已经是iterable了。你知道吗

像这样:

if len(characters1) > len(characters2):
     print('Extra characters1: ', characters1[len(characters2):])
elif len(characters2) > len(characters1):
     print('Extra characters2: ', characters2[len(characters1):])

比较它们的长度:

if len(a)>len(b):
    print("a is longer than b by %s" % str(len(a)-len(b))) 
    print("Extra part is %s" % a[len(b):])
elif len(a)<len(b):
    print("a is shorter than b by %s" % str(len(b)-len(a)))
    print("Extra part is %s" % b[len(a):])

相关问题 更多 >

    热门问题