【发布时间】:2015-06-09 15:36:57
【问题描述】:
coll = [[3, 3], [2, 2, 2], [2, 4], [2, 3], [2, 2]]
main = [4, 3, 3, 2, 2, 2, 2, 2, 2, 2]
我有 2 个列表。 'coll' 是一个列表列表,每个子列表包含可能有重复的整数(例如 [2, 2, 2])。 main 是一个包含整数的列表。我想检查 'coll' 的子列表元素是否存在于 'main' 中。对于这种情况,这是正确的,因为存在 [2, 2, 2], [3, 3] 和其他子列表。子列表和“主”中元素的顺序无关紧要。无论子列表中存在什么元素,它们都可能出现在“主”中的任何位置。
由于存在重复项,我无法使用集合。而且我不能使用字符串,因为:
coll = ['222']
main = ['423262']
我使用了一个子列表示例来显示使用字符串的问题。我的算法要求是,在这种情况下,也返回“真”,因为“2”出现在 3 个位置,索引为 1、2、5。但是:
if coll in main:
return True
else:
return False
如果我使用字符串进行检查,这将返回 false。
请提出任何方法。
【问题讨论】:
-
如果 main 是
[2, 2, 2]应该是什么输出?[2, 2, 2]和[2, 2]都应该匹配? -
在这种情况下应该返回'true'。实际上,“coll”中的子列表已经按照它们的优先级顺序排列。由于 [2, 2, 2,] 优先级在 [2, 2] 之前存在,并且它存在于“main”中,因此它将返回“true”。程序不会检查 [2, 2]。
标签: list python-3.x sublist