如何测试一个列表是否包含另一个包含Python中特定项目的列表?
问题描述:
我有一个列表的列表,并希望检查它是否已经包含具有特定项目的列表。如何测试一个列表是否包含另一个包含Python中特定项目的列表?
一切都应该清楚从这个例子:
list = [[1,2],[3,4],[4,5],[6,7]]
for test in [[1,1],[1,2],[2,1]]:
if test in list:
print True
else:
print False
#Expected:
# False
# True
# True
#Reality:
# False
# True
# False
是否存在,无论列表的项目比较它们是如何排序的功能?
答
你想使用的是一组: set([1,2]) == set([2,1])
返回True。
所以
list = [set([1,2]),set([3,4]),set([4,5]),set([6,7])]
set([2,1]) in list
也返回True。
+1
顺便说一下,在Python3中 - 也许未来一代实际上可以使用的东西 - 您可以说'[{1,2},{ 3,4},{4,5},{6,7}]'。 – 2010-11-05 18:43:53
答
如果他们真的设置,使用集类型
# This returns True
set([2,1]) <= set([1,2,3])
<=
手段“的一个子集”带套的时候。欲了解更多信息,请参阅operations on set types。
答
如果你想得到[1,2] = [2,1]你不应该使用列表。 Set是正确的类型。在列表中,组件的顺序很重要,在集合中它们不重要。这就是为什么你没有得到'真实'的原因。
[使用Python在另一个列表中搜索列表的值]可能的重复(http://stackoverflow.com/questions/1695452/searching-values-of-a-list-in-another-list-using-python ) – 2010-11-05 18:35:37
在...中进行测试:在列表中打印排序(测试) – 2010-11-05 20:37:14