【问题标题】:I have an list, sum the similar number我有一个清单,将相似的数字相加
【发布时间】:2021-10-02 16:27:31
【问题描述】:
list = [1,1,4,4,4,0,1]
    new_list = []
    sum_ = 0
    for number in list:
        if number == number+1:
            sum_ += number
        else: 
            sum_ += number
            new_list.append(sum_)
print(new_list)

输出 => [1, 2, 6, 10, 14, 14, 15]

预期 => [2, 12, 0, 1]

【问题讨论】:

  • 也许itertools.groupby 是您要找的?请在问题中添加更多详细信息。在问题中向我们解释您正在尝试做什么,为什么没有这样做,以及您希望最终结果是什么样的。
  • 首先,if number == number+1 永远不会是True,其次,在else 分支中,您总是更新sum_,而不是将其重置为零。
  • @HampusLarsson 关于我所期望的最终结果,我希望它是 [2, 12, 0, 1]
  • @HamzaTanya 请在问题块内提出问题,而不仅仅是发布代码块。用你的话解释你正在努力处理的代码的哪一部分,解释为什么你认为你的逻辑应该是True你想要的,以便我们知道我们需要帮助向你解释的部分。请阅读帮助页面How to Ask

标签: python list for-loop arraylist


【解决方案1】:

代码计算连续相同数字的数量并将这些数字乘以它们的数量

numbers = [1, 1, 4, 4, 4, 0, 1]
hook, cnt, out = numbers[0], 0, []
for i in numbers:
    if i == hook:
        cnt += 1
    else:
        out.append(hook * cnt)
        hook, cnt = i, 1
out.append(hook * cnt)
print(out)  # [2, 12, 0, 1]

【讨论】:

    【解决方案2】:

    检查此代码:

    my_list = [1,1,4,4,4,0,1]
    my_sum = my_list[0]
    my_results = []
        
    for i in range(1, len(my_list)):
        if my_list[i] == my_list[i-1]:
            my_sum += my_list[i]
        else:
            my_results.append(my_sum)
            my_sum = my_list[i]
    else:
        my_results.append(my_sum)
    

    我首先将my_sum 初始化为列表的第一个元素,然后扫过列表的其余元素,始终比较相邻元素是否相等。如果相等,则更新my_sum,如果不相等,my_sum 首先存储到输出列表my_results,然后重新初始化为原始列表中的新数字。

    【讨论】:

      猜你喜欢
      • 2016-04-06
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多