Python比较两个字符串的差异

时间:2017-01-31 12:42:16

标签: python string list

我目前有两个列表:

str1 = ['test1.jpg', 'test2.jpg', 'test3.jpg']
str2 = ['test1.jpg', 'test2.jpg']

您可能已经注意到,str2中缺少test3.jpg。有没有办法可以将str2与str1进行比较并找到缺失的部分?

3 个答案:

答案 0 :(得分:0)

好。那些实际上是你在那里获得的2个字符串列表。
比较一个简单的方法是:

missing = [x for x in str1 if x not in str2]
missing

输出:

['test3.jpg']
希望有所帮助!

答案 1 :(得分:0)

您可以使用内置类型set

str1 = ['test1.jpg', 'test2.jpg', 'test3.jpg']
str2 = ['test1.jpg', 'test2.jpg']
s1 = set(str1)
s2 = set(str2)
print(s1-s2)

从那里你可以轻松创建功能:

def difference(list1,list2):
    return set(list1)-set(list2)

如果您想在两者之间创建差异,您可以执行以下操作: 对于数据:

str1 = ['test1.jpg', 'test2.jpg', 'test3.jpg']
str2 = ['test1.jpg', 'test2.jpg', 'test4.jpg']

Funcion将是:

def difference(list1,list2):
    return (set(list1)-set(list2)) | (set(list2)-set(list1))

或者:

def difference(list1,list2):
    return set(list1).symmetric_difference(set(list2))

输出:

  

{' test3.jpg',' test4.jpg'}

所有内容都记录在此处:Python3 Python2

答案 2 :(得分:0)

使用 设置 差异运算符的解决方案:

str1 = ['test1.jpg', 'test2.jpg', 'test3.jpg']
str2 = ['test1.jpg', 'test2.jpg']

diff = list(set(str1) - set(str2))
# the same can be achieved with set.difference(*others) method:
# diff = list(set(str1).difference(set(str2))) 
print(diff)

输出:

['test3.jpg']

https://docs.python.org/3/library/stdtypes.html?highlight=set#set.difference