【发布时间】:2013-05-16 16:34:44
【问题描述】:
我有一个列表列表(“子列表”),我想查看是否有任何未指定长度的相同 序列 出现在多个子列表中。为了澄清,必须保留项目的顺序 - 我不希望每个子列表的交集作为一个集合。必须至少有 2 个按顺序匹配的项目。 请看下面的例子。
输入:
someList = [[0,1,3,4,3,7,2],[2,3,4,3],[0,3,4,3,7,3]]
期望的输出:(将被打印到文件但不要担心这个细节)
sublist0_sublist1 = [3,4,3]#第一个和第二个子列表的交集
sublist0_sublist2 = [3,4,3,7]#第一个和第三个子列表的交集
sublist1_sublist2 = [3,4,3]#第二个和第三个子列表的交集
【问题讨论】:
-
结果中的项目必须在输入列表中连续出现吗?
-
然后查找“最长公共子串”算法,假设当有多个子串时您想要最长的此类子串。 @Colleen 的链接似乎不相关。
-
啊,没有意识到另一个问题是 1. 比标题说的更严格,2. 不需要连续的子序列。在这种情况下,请查看 stackoverflow.com/questions/14032903/… 以获取算法帮助,尽管它使用的是 c++ 而不是 python。
-
也许您可以将它们组合成由逗号等符号分隔的字符串。匹配 "1,34" 和 [1,34] 应该返回相同的结果。
标签: python sequence intersection preserve