【发布时间】:2019-10-25 12:35:58
【问题描述】:
我在网上做一些练习题来申请实习,结果遇到了困难。问题是对相同的连续数字求和。
示例:[1,1,3,4,4,5] ---> [2,3,8,5]
def sum_consecutive(s):
p = []
for i in range(len(s)):
if s[i] == s[i-1]:
p.append(s[i] + s[i-1])
p.remove(s[i])
elif s[i] != s[i-1]:
p.append(s[i])
return p
在 [1,4,4,4,0,4,3,3,1] 上运行上述代码时,它应该返回 [1,12,0,4,6,1] 而不是返回
在 sum_consecutive(s) 中
if s[i] == s[i-1]:
p.append(s[i] + s[i-1])
p.remove(s[i]) #This line is the problem
elif s[i] != s[i-1]:
p.append(s[i])
错误:
ValueError: list.remove(x): x not in list
【问题讨论】:
-
建议:既然是申请实习,那就学习调试代码吧。对于初学者,请阅读Eric Lippert's How to debug small programs。了解如何使用打印功能和调试器,面试成功的几率会更高。
-
itertools.groupby应该会有所帮助。 -
当
i=0你最终会比较索引0 和索引-1(这是最后一个元素),因此你会得到错误(当时p是空的) -
根据您的错误,您的代码中有
p.remove(s[i]-1),但它不在您发布的代码中。 -
@khelwood 抱歉,我在写这个问题时犯了一个错误,但你可以尝试运行它,你会看到这个错误。
标签: python python-3.x list