python - 如何比较两个列表?

标签 python string loops

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

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/

相关文章:

ios - 在 Swift 中循环遍历枚举值

Python C++ api - 在函数重载中返回不同类型

python - 删除 numpy 中高度相关的列(没有 pandas)

arrays - bash 字符串引用多字参数到数组

java - 从一个文件读取,导出到另一个文件

java - 当循环后有 `println` 时,为什么这个循环多次的程序需要时间?

c++ - 循环此数组时,为什么我的代码无法正常工作

python - DRF-通过模型在 M2M 中创建新实例时出错

python - Django 1.11 : post form data to database

c# - 如何声明在非托管 C++ dll 和 C# 应用程序中使用的常量字符串?