【发布时间】:2018-06-18 05:33:42
【问题描述】:
我对 Python (3.6) 很陌生,并且很难理解 itertools groupby。 我有以下包含整数的列表:
list1 = [1, 2, 0, 2, 3, 0, 4, 5, 0]
但列表也可以更长,并且“0”不必出现在每对数字之后。它也可以在 3、4 或更多数字之后。我的目标是将此列表拆分为子列表,其中“0”用作分隔符并且不会出现在任何这些子列表中。
list2 = [[1, 2], [2, 3], [4, 5]]
这里已经解决了一个类似的问题: Python spliting a list based on a delimiter word 答案 2 似乎对我有很大帮助,但不幸的是它只给了我一个 TypeError。
import itertools as it
list1 = [1, 2, 0, 2, 3, 0, 4, 5, 0]
list2 = [list(group) for key, group in it.groupby(list1, lambda x: x == 0) if not key]
print(list2)
文件“H:/Python/work/ps0001/example.py”,第 13 行,在 list2 = [list(group) for key, group in it.groupby(list, lambda x: x == '0') if not key]
TypeError: 'list' 对象不可调用
我会很感激任何帮助,并且很高兴最终了解 groupby。
【问题讨论】:
-
您不应该将您的自定义列表命名为“列表”,因为这是一个关键字。使用“mylist”/“onelist”等。
-
list是保留关键字。将list = [1, 2, 0, 2, 3, 0, 4, 5, 0]重命名为list1或其他任何名称。 -
谢谢!我更改了它并将记住它。
标签: python list split delimiter