如何在python中拆分列表索引范围?

时间:2016-10-23 15:33:46

标签: python list

给出一个清单:

['x','y',1,2,'b','l',3,'z']

我想通过给定的非法字符拆分列表, 例如,给定的字符是'y'和'b',我想得到索引:[0,2:3,5:]

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以根据元素是否在非法字符中的条件对列表进行分组,然后为每个组提取相应的索引:

from itertools import groupby
charList = ['y', 'b']
[[i[0] for i in g] for k, g in groupby(enumerate(lst), lambda x: x[1] in charList) if not k]

# [[0], [2, 3], [5, 6, 7]]

另一种从每个组中提取索引的方法:

[list(zip(*g))[0] for k, g in groupby(enumerate(lst), lambda x: x[1] in charList) if not k]

# [(0,), (2, 3), (5, 6, 7)]