我有
一堆从0到大约1000的整数列表,以下是这样一个列表的前几个元素:
oldlist = [216, 216, 199, 253, 271, 217, 183, 225, 199, 217, 217, 235, 254, 217, 235, 235, 234, 234, 235, 231, 183, 263, 298, 190, 248, 200, 223, 199, 225, 195, 240]
我想要
将连续的列表元素相加,并且这些元素>215,将它们合并为单个列表元素,同时保留列表的其余部分。 对于上面的列表,结果应为:
newlist = [432, 199, 741, 183, 225, 199, 2544, 183, 561, 190, 248, 200, 223, 199, 225, 195, 240]
我尝试过
def dtadder(oldlist):
newlist = []
nlidx = 0 # newlist index
for idx, x in enumerate(oldlist):
if idx > 0 and oldlist[idx - 1] > 215 and oldlist[idx] > 215:
x = oldlist[idx] + newlist[nlidx - 1]
newlist.remove(newlist[nlidx - 1])
nlidx -= 1
newlist.append(x)
nlidx += 1
return newlist
发生了什么
问题在于所有事情都按照我预期的方式进行,直到循环的第116次迭代(nlidx=85),突然某些原因导致列表中删除了newlist[4]=225。虽然我还没有搞清楚何时以及为什么会这样做,但其他元素也会偶尔发生这种情况。似乎只有大于215的元素会被删除。
我错过了什么?虽然我对编程和Python还比较新手,但我觉得应该有一种更简单和更易读的方法来解决这个问题。除了解决我的问题之外,我也很想了解为什么我的解决方案不起作用。