正如标题所提到的那样,是否有任何内置工作来完成这项工作?我找到了它,dir(list)但没有可用的那些.谢谢.
nos*_*klo 39
取决于你所说的"包含".也许这个:
if set(a) <= set(b):
print "a is in b"
Run Code Online (Sandbox Code Playgroud)
小智 8
您可能想要使用 set
if set(a).issubset(b):
print('a is contained in b')
Run Code Online (Sandbox Code Playgroud)
解决方案取决于您对列表的期望值。
如果存在重复值的可能性,并且您需要检查测试容器中是否有足够的值,那么这是一个时间效率低的解决方案:
def contained(candidate, container):
temp = container[:]
try:
for v in candidate:
temp.remove(v)
return True
except ValueError:
return False
Run Code Online (Sandbox Code Playgroud)
使用以下命令测试此功能:
>>> 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
Run Code Online (Sandbox Code Playgroud)
当然,这个解决方案可以大大改进:list.remove() 可能很耗时,可以使用巧妙的排序和索引来避免。但我不知道如何在这里避免循环......
(无论如何,任何其他解决方案都将使用集合或列表推导来实现,它们在内部使用循环......)