首页 > 解决方案 > 根据未知索引在子列表中切片列表

问题描述

根据包含索引的另一个列表,将列表(此处:lst_num)切成(多于两个)可变长度部分的最佳方法是什么?

必须将一串数字拆分为子列表,其中包含位于某个数字的所有后续出现之间的数字。例如: "30 24 17 30 22 1 67 2 4 3 30 24 95 34 29 56 30 43 24" 和 "30" 产生: [24, 17], [22, 1, 22, 1, 67, 2, 4, 3] 和 [24, 95, 34, 29, 56]

str_num="30 24 17 30 22 1 67 2 4 3 30 24 95 34 29 56 30 43 24"
lst_num=[int(x) for x in ciphtext.split()]
idx=[i for i, x in enumerate(lst_num) if x==30]
for i in idx: ???

要对列表进行切片,第一个参数应该是“i+1”,但是如何从 idx 获取后续索引作为停止索引呢?有没有办法在迭代中给每个子列表一个唯一的名称?

标签: python

解决方案


一小步:

>>> [lst_num[start+1:end] for start, end in zip(idx, idx[1:])]
[[24, 17], [22, 1, 67, 2, 4, 3], [24, 95, 34, 29, 56]]

只是zip成对的切片边界的索引。


推荐阅读