比较两个列表以查找第一个列表中不存在第二个列表中的哪些字符串

时间:2014-01-27 22:27:53

标签: python

如何在python中解决这个问题:如果在列表A中找到列表B中的字符串,则在B中读取下一个字符串,否则将字符串写入列表C(在A中从B中找到项目的新列表),直到文件末尾为止。列表B.换句话说,我想用列表B中的字符串搜索列表A,如果不匹配,我想将该字符串写入名为C的新列表。

lista = {a,b,c,d,g} listb = {a,d}

导致: listc = {b,c,g}

谢谢!

1 个答案:

答案 0 :(得分:1)

在Python中使用类似花括号时,它会创建一个集合,而不是列表。因此,listalistblistc是否为集合或列表*尚不清楚。

如果它们是集合,那么您可以使用- operator来区分它们:

>>> lista = {'a','b','c','d','g'}
>>> listb = {'a','d'}
>>> listc = lista - listb
>>> listc
{'b', 'c', 'g'}
>>>

如果它们是列表,那么您需要先将它们转换为集合:

>>> lista = ['a','b','c','d','g']
>>> listb = ['a','d']
>>> listc = list(set(lista) - set(listb))
>>> listc
['b', 'c', 'g']
>>>

或者,您可以使用list comprehension

>>> lista = ['a','b','c','d','g']
>>> listb = ['a','d']
>>> listc = [x for x in lista if x not in listb]
>>> listc
['b', 'c', 'g']
>>>

*注意:如果它们是集合,那么您应该重命名它们以避免混淆。