【问题标题】:How to check if a 2D list contains a list that partly contains another list如何检查二维列表是否包含部分包含另一个列表的列表
【发布时间】:2022-11-21 07:46:12
【问题描述】:

我试图查明我的 Tabu 列表 (2D) 是否包含一个列表,该列表部分包含另一个列表。

喜欢:

Tabu = [[1, 2, 3], [4, 5, 6, 0]]
Test = [4, 5, 6]

这里 Tabu 包含一个列表:[4, 5, 6, 0] 包含 [4, 5, 6],因此 Tabu 包含 Test。

注意:Test 的所有值必须在 Tabu 的子列表中才能通过。

在尝试使用allin 的多种方法后,我没有主意了。

注意:将列表更改为集合不是一个选项。

【问题讨论】:

  • 欢迎来到 StackOverflow。您说您使用allin 尝试了多种想法 - 您在正确的道路上,请分享您认为可行的尝试,并且有人能够改进或修复它。当询问 SO 时,您应该始终共享一些代码并解释发生了什么以及您期望什么。 (顺便说一句,你对集合的评论表明你不关心元素的顺序,所以 [6, 5, 0, 4] 的子列表也会“包含”另一个列表,对吗?)
  • 我不太确定规则。 Test = [6, 5, 4](错误的顺序 - 所以它不是列表中的子列表)是否匹配?如果在 Tabu 或 Test 中重复了一个数字,您是否必须多次匹配同一个数字?
  • 我同意 Grismar 的观点。也许查看 set 数据类型?

标签: python list


【解决方案1】:

您需要遍历 Tabu 并检查 Test 列表的所有元素是否都在 Tabu 的子列表中

>>> Tabu = [[1, 2, 3], [4, 5, 6, 0]]
>>> Test = [4, 5, 6]
>>> 
>>> result = any( all(1 for i in Test if i in sublist )for sublist in Tabu)
>>> result
True
>>> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    相关资源
    最近更新 更多