加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python检查二维列表是否包含另一个列表的数字

发布时间:2020-12-17 17:36:59 所属栏目:Python 来源:网络整理
导读:我想知道列表中是否包含列表中的数字,但是我没有尝试按照自己的意愿进行操作.例如,如果list2 = [[1,2,3],[4,5,6]]中的列表的列表在list1 = [4、5、6、7]中,则应打印True,因为数字list1中的一个是list2中的整个列表.因此,由于list1包含数字4、5、6,因此输出应

我想知道列表中是否包含列表中的数字,但是我没有尝试按照自己的意愿进行操作.例如,如果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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读