将列表拆分为具有多个整数分隔符的块

时间:2015-09-11 00:10:56

标签: python list

我有两个整数列表,即numbersdelimiters。我想将numbers划分为除以delimiters的块。

实施例

numbers = [10, 13, 7, 204, 129, 44, 12, 7, 17, 49, 216, 43, 16, 7, 7, 38, 29, 76, 54, 17, 39, 7, 17, 77, 7, 24, 19]
delimiters = [7,17,77]

输出:

result = [[10,13],[204, 129, 44, 12],[49, 216, 43, 16],[38, 29, 76, 54],[39],[24, 19]]

正如示例中所示,如果我看到delimiter的一个或多个出现,我想拆分列表。

我可以通过一个简单的循环轻松完成,但我确信应该有一个更好的,可能还有更多 Pythonic 的做法它。我也觉得itertools是要走的路,但是,我找不到能够解决这个问题的好功能。

1 个答案:

答案 0 :(得分:6)

在这里,您可以使用itertools.groupby

>>> from itertools import groupby
>>> [list(g) for k, g in groupby(numbers, delimiters.__contains__) if not k]
[[10, 13], [204, 129, 44, 12], [49, 216, 43, 16], [38, 29, 76, 54], [39], [24, 19]]