我想知道列表中是否包含列表中的数字,但是我没有尝试按照自己的意愿进行操作.例如,如果list2 = [[1,2,3],[4,5,6]]中的列表的列表在list1 = [4、5、6、7]中,则应打印True,因为数字list1中的一个是list2中的整个列表.因此,由于list1包含数字4、5、6,因此输出应为True.
这是我尝试过的
for i in range(len(list2)):
if list1 in list2[i]:
print('True')
else:
print('False')
它两次打印出False(但我需要打印出True),我明白了为什么
[1,3] in [1,3,4]
>>> False
有办法避免这种情况吗?
还是我应该只使用字符串,因为它可以正常工作?
最佳答案
与列表相比,集合更有效地查找项目集合是否是另一个项目的子集.通过将列表强制转换为集合,可以使用set.issuperset方法快速查找.
list_of_lists = [[1,6]]
list1 = [4,6,7]
list1_as_set = set(list1)
result = any(list1_as_set.issuperset(l) for l in list_of_lists) # True
上面使用any的代码等效于使用for循环的此解决方案.
for l in list_of_lists:
if list1_as_set.issuperset(l):
result = True
break
else:
result = False
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。