【问题标题】:How can a I sum a list in cycles我如何按周期对列表求和
【发布时间】:2022-01-24 11:21:48
【问题描述】:

我需要创建一个列表,将 x 到 x 范围内的值相加。例如,用 2 计算总和 2

myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
listSum = sum(myList)
print(f"Sum of list -> {listSum}")

我想在第一次迭代中实现 1+2,在接下来的 3+4 中直到最后一个列表值。我尝试了列表压缩,但我不知道如何求和。

myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2 = [ i for i in range(myList[0],len(myList),2)]
print(list2)

我假装得到 list2 = [3,7,11,15,19]

问题是,例如,如果我的列表有 240 个值,我想将 60 与 60 相加,以 60 个值的块为单位求和。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python list sum


    【解决方案1】:

    您是否期待任何剩余值?像长度为 15 的 4 块? 如果你想使用 numpy,我会用基本的 python 来回答这个问题,看看 AJITHs 的答案。

    list2 = [sum(myList[i:i+blockSize]) for i in range(len(myList)//blockSize +1)]
    

    【讨论】:

      【解决方案2】:

      您需要做的是首先将有问题的原始列表分成大小为“n”的部分。 这可以通过使用列表推导来创建原始列表的部分列表来完成。

      >>> original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      >>> n = 2 # size of each chunk
      >>> splits_of_og_list = [original_list[i:i+n] for i in range(0, len(original_list), n)]
      >>> splits_of_og_list
      [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
      

      n 替换为您想要的任何大小,您将获得大小为n 的块。

      然后只需在splits_of_og_list 上使用 sum 函数。

      >>> summed_list = [sum(split) for split in splits_of_og_list]
      >>> summed_list
      [3, 7, 11, 15, 19]
      

      sum 是一个内置函数,它返回整数可迭代的总和。

      【讨论】:

        【解决方案3】:

        range(start, stop, step) 函数可以采取一个步骤,允许您在迭代时跳过值。然后,您需要使用迭代值索引 myList 中的元素。

        >>> myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        >>> list2 = [myList[i-1] + myList[i] for i in range(1, len(myList), 2)]
        >>> list2
        [3, 7, 11, 15, 19]
        

        请注意,当myList 中有奇数个元素时,会遗漏最后一个元素。

        >>> myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
        >>> list2 = [myList[i-1] + myList[i] for i in range(1, len(myList), 2)]
        >>> list2
        [3, 7, 11, 15, 19]
        

        【讨论】:

        • 我认为我的启发不够,我想以块为单位对列表求和,例如,如果我的列表有 240 个值,我想将 60 与 60 相加,以 60 个值为块求和。
        • 所以你是说,你想获得总和,但是在每个阶段将列表大小减少 2 倍的阶段?
        • 或其他因素,我有一个值列表,我想将前 60、0 到 59、60 到 119 等相加
        【解决方案4】:

        使用 numpy

        import numpy as np
        
        myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        arr = np.reshape(np.array(myList), (-1, 2))
        sum_arr = np.sum(arr, axis=1)
        print(sum_arr)
        

        输出:

        [ 3  7 11 15 19]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-11
          • 2017-09-27
          • 2020-07-26
          相关资源
          最近更新 更多