正如标题所提到的那样,是否有任何内置工作可以完成这项工作?我在dir(list)
寻找了那个但是没有可用的那个。谢谢。
答案 0 :(得分:34)
取决于“包含”的含义。也许这个:
if set(a) <= set(b):
print "a is in b"
答案 1 :(得分:11)
假设您想查看sublist
的所有元素是否也是superlist
的元素:
all(x in superlist for x in sublist)
答案 2 :(得分:3)
解决方案取决于您对列表的期望值。
如果有重复值的可能性,并且您需要检查测试容器中是否有足够的值,那么这是一个时间效率低的解决方案:
def contained(candidate, container):
temp = container[:]
try:
for v in candidate:
temp.remove(v)
return True
except ValueError:
return False
使用以下方法测试此功能:
>>> a = [1,1,2,3]
>>> b = [1,2,3,4,5]
>>> contained(a,b)
False
>>> a = [1,2,3]
>>> contained(a,b)
True
>>> a = [1,1,2,4,4]
>>> b = [1,1,2,2,2,3,4,4,5]
>>> contained(a,b)
True
当然这个解决方案可以大大改进:list.remove()可能很耗时,可以使用巧妙的排序和索引来避免。但我不知道如何在这里避免循环...
(无论如何,任何其他解决方案都将使用集合或列表推导来实现,它们在内部使用循环......)
答案 3 :(得分:0)
您可能想使用set
if set(a).issubset(b):
print('a is contained in b')