如何搜索所有完全元素与我要查找的内容相匹配的列表。例如,我想验证以下列表是否包含'a','b'和'c',以及更多或更少。
lst=['a', 'b', 'c']
我这样做了:
if 'a' in lst and 'b' in lst and 'c' in lst:
#do something
非常感谢提前。
答案 0 :(得分:6)
您可以对列表进行排序,然后只需对它们进行比较:sorted( list_one ) == sorted( list_two )
。
您也可以将两个列表转换为集合并进行比较。但要小心,套餐吃重复的物品! set( list_one ) == set( list_two )
。
集合还可以告诉您哪些项目缺少:set(list_one) ^ set(list_two)
。
一些例子:
>>> sorted("asd") == sorted("dsa")
True
>>> sorted( "asd" ) == sorted( "dsa" )
True
>>> sorted( "asd" ) == sorted( "dsaf" )
False
>>> set( "asd" ) == set( "dasf" )
False
>>> set( "asd" ) == set( "daas" )
True
>>> set( "asd" ) ^ set( "daf" )
set(['s', 'f'])
答案 1 :(得分:1)
这确实有效。为什么你认为它没有?
另外,你知道Python集吗? http://docs.python.org/library/sets.html
答案 2 :(得分:1)
使用套装可以满足要求: 在第一种情况下,列表是相同的,具有所有元素,没有更少或更多 而在第二种情况下它不是,它出现了。 您可以将此用于此目的。
>>> lst=['a', 'b', 'c']
>>> listtocheck = ['a', 'b', 'c']
>>> s1 = set(lst)
>>> s2 = set(listtocheck)
>>> k = s1 ^ s2
>>> k
set([])
>>> listtocheck = ['a', 'b', 'c', 'd']
>>> s2 = set(listtocheck)
>>> k = s1 ^ s2
>>> k
set(['d'])
>>>