【发布时间】:2017-06-15 23:57:36
【问题描述】:
我正在努力寻找我的絮凝功能中的错误。
该函数的目标是获取一个列表并将每组连续值分块为一个值。比如……
[1, 4, 4, 2, 0, 3, 3, 3] => [1, 4, 2, 0, 3]
现在的功能是……
def flocculate(array):
for index1, val1 in enumerate(array):
if val1 == 0 or not not val1:
new_array = array[index1+1:]
for index2, val2 in enumerate(new_array):
if array[index1] == val2:
array[index1 + index2 + 1] = False
else:
break
return [value for value in array if type(value) is not bool]
但是,它似乎不能很好地处理零。
例如,下面显示的输入得到了一些正确的零,但错过了其他一些......
[2, 4, 4, 0, 3, 7, 0, 2, 2, 2, 8, 0, 0, 0] => [2, 4, 3, 7, 0, 2, 8, 0]
【问题讨论】:
-
稍后重复一组数字的输入的正确输出是什么?例如
[1, 4, 4, 2, 0, 3, 3, 3, 1, 1, 4, 2, 0, 0, 8, 3, 3, 0] -
当你得到解决方案时,请记得给有用的东西投票并接受你最喜欢的答案(即使你必须自己写),这样 Stack Overflow 才能正确存档问题。跨度>
-
哟@Prune,你得到了我的支持!我只是还没有足够的 stackoverflow 街道信誉来公开展示我的选票。无论如何,这就是stackoverflow告诉我的。实际上,每个答案都以自己的方式非常愚蠢。你的,因为它简单而优雅。 d-gillis 指出我原始代码中的缺陷。还有 peter-de-rivaz 以四票全票指出了似乎是典型的 python 聚集一些数据的方式。谢谢大家,你摇滚