合并列表中的值

时间:2014-06-11 09:14:37

标签: python list

我有一个列表,我必须合并这样的值:

列表:[1, 1, 2, 1, 1, 0]

结果:[2, 2, 2, 0, 0, 0]

它从左向右合并,每次只合并2个相同的数字。

  
      
  • 前两个值相加(1 + 1)
  •   
  • 2向左移动
  •   
  • 其他两个值也加起来(1 + 1)并移位
  •   
  • 列表从右边用零填充,所以列表的长度保持不变
  •   
  • (编辑)列表中的任何零都将在最后,而不是在中间
  •   

我对Python很陌生,并且不清楚如何处理这个问题。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

简单明了的事情:

def merge_pairs(a):
    out = []
    i = 0
    while i < len(a):
        if i < len(a) - 1 and a[i] == a[i + 1]:
            out.append(a[i] + a[i + 1])
            i += 2
        else:
            out.append(a[i])
            i += 1
    out += [0] * (len(a) - len(out))
    return out

不是100%确定这是你所需要的,但也许它可以是一个开始。

您提供的单项测试似乎有效:

>>> merge_pairs([1, 1, 2, 1, 1, 0])
[2, 2, 2, 0, 0, 0]