gpt4 book ai didi

python - 在列表中查找特定的子列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:12 26 4
gpt4 key购买 nike

假设我们有以下列表:

sequence = ['2', '4', '1', '2', '3', '4', '2', '4', '2', '4', '4']
#indices 0 1 2 3 4 5 6 7 8 9 10

接下来,我们有以下列表:

key_list = ['2', '2', '4']

现在,我想从 sequence 中提取所有可能的子列表,这些子列表保留 keylist 的顺序,即它的索引。

让我举例说明。因此,对于 sequence,保留 key_list 顺序的所有可能的索引子列表是:

[0, 3, 5]
[0, 3, 7]
[0, 3, 9]
[0, 3, 10]

[0, 6, 7]
[0, 6, 9]
[0, 6, 10]

[0, 8, 9]
[0, 8, 10]

[3, 6, 7]
[3, 6, 9]
[3, 6, 10]

[3, 8, 9]
[3, 8, 10]

[6, 8, 9]
[6, 8, 10]

有什么建议吗?

编辑:我正在处理一个大数据集,我必须对文件的每一行执行此操作,因此我正在寻找一种非常优化的方法来避免暴力方法(使所有可能的组合顺序)

附言不知道题名是否合适,如果有更好的欢迎修改。

最佳答案

您可以使用 itertools.combinations为了这。在 enumerate(sequence) 上应用 combinations()(使用 r=len(key_list))从列表中获取所有 r-length 组合,由于 enumerate() 返回索引和项目,我们可以在这里轻松获取索引:

>>> from itertools import combinations               
>>> for c in combinations(enumerate(sequence), len(key_list)):
indices, data = zip(*c)
if list(data) == key_list:
print indices
...
(0, 3, 5)
(0, 3, 7)
(0, 3, 9)
(0, 3, 10)
(0, 6, 7)
(0, 6, 9)
(0, 6, 10)
(0, 8, 9)
(0, 8, 10)
(3, 6, 7)
(3, 6, 9)
(3, 6, 10)
(3, 8, 9)
(3, 8, 10)
(6, 8, 9)
(6, 8, 10)

关于python - 在列表中查找特定的子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24549314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com