我看到下面的代码可以检查一个单词是否
list1 = 'this'
compSet = [ 'this','that','thing' ]
if any(list1 in s for s in compSet): print(list1)
现在我想检查一个列表中的单词是否在其他列表中,如下所示:
list1 = ['this', 'and', 'that' ]
compSet = [ 'check','that','thing' ]
检查list1中的单词是否在compSet中,以及对不存在的元素执行某些操作的最佳方法是什么,例如,附加'和' comp compSet或者删除'和'来自list1?
__________________更新___________________
我刚刚发现做同样的事情不适用于sys.path。下面的代码有时会添加到sys.path的路径,有时不会。
myPath = '/some/my path/is here'
if not any( myPath in s for s in sys.path):
sys.path.insert(0, myPath)
为什么这不起作用?另外,如果我想在一组路径上执行相同的操作,
myPaths = [ '/some/my path/is here', '/some/my path2/is here' ...]
我该怎么做?
答案 0 :(得分:8)
有一种简单的方法可以检查两个列表的交集:将它们转换为集合并使用intersection
:
>>> list1 = ['this', 'and', 'that' ]
>>> compSet = [ 'check','that','thing' ]
>>> set(list1).intersection(compSet)
{'that'}
您也可以使用按位运算符:
路口:
>>> set(list1) & set(compSet)
{'that'}
联:
>>> set(list1) | set(compSet)
{'this', 'and', 'check', 'thing', 'that'}
您可以使用list()
将这些结果中的任何一个列为一个列表。
答案 1 :(得分:1)
试试:
>>> l = list(set(list1)-set(compSet))
>>> l
['this', 'and']