【发布时间】:2018-06-27 15:59:31
【问题描述】:
def gp(inp): #group positives in the list
for x in range(len(inp)-1):
if is_pos(inp[x][0]) and is_pos(inp[x+1][0]):
inp[x] += inp[x+1]
del inp[x+1]
我在 python 中工作。上面的代码用于将相邻的积极因素组合在一起。由于我收到的错误,我认为这个问题会吸引其他人。那会是什么错误?一个索引错误。
Traceback (most recent call last):
File "python", line 95, in <module>
File "python", line 49, in formt
File "python", line 10, in gp
IndexError: list index out of range
我想要实现的是对如下所示的列表进行分组:[[1],[2],[3],[-4],[-3],[-2],[-1],[0]]
看起来像这样:[[1,2,3],[-4,-3,-2,-1],[0]] 我没有其他导入,这不会调用任何其他函数。我将如何执行此操作,为什么会收到该错误?我的理论是它位于range(len(inp)),但我已经尝试过很多次尝试但没有运气。每个单独数字周围的括号是有意的,因此我可以通过“添加”它们将数字组合成列表。如果你有不同的方法,请告诉我。我希望这是关于一般的内部分组,所以试着概括一下我做错了什么。
【问题讨论】:
-
这是一个机器学习库,将积极因素组合在一起是我过程中的重要一步。我希望我能解释原因,但那将是一个很长的评论。
-
您正在删除一个列表元素,同时对其进行迭代。不要这样做。 See for instance here
-
如果你有一个列表会发生什么
[[1],[-1],[1]]你会喜欢它吗? -
0 是否假定为正数?
-
标准的
itertools模块有一个groupby函数,非常适合这样的任务。
标签: python python-3.x list