Python - 增量子列表求和


在增量子列表求和中,將給定一個包含一些整數元素的列表,並允許一些特定的條件和迭代來新增前一個元素。在 Python 中,我們有一些內建函式,如 accumulate()、cumsum() 和 tolist(),可用於解決增量子列表求和問題。

讓我們來看一個例子。

給定的列表:[10, 20, 30, 40, 50]

10:第 0 個索引

10 + 20 = 30:第 1 個索引

10 + 20 + 30 = 60:第 2 個索引

10 + 20 + 30 + 40 = 100:第 3 個索引

10 + 20 + 30 + 40 + 50 = 150:第 4 個索引

因此,最終結果變為 [10, 30, 60, 100, 150]

語法

以下語法在示例中使用 -

sum()

sum() 是 Python 中的一個內建函式,允許將可迭代形式的值相加。

range()

range() 是 Python 中的一個內建函式,根據給定的範圍返回數字序列。

len()

len() 是 Python 中的一個內建函式,返回結果的長度。

accumulate()

accumulate() 是 Python 中的一個內建函式,返回給定列表的可迭代元素的加和。

cumsum()

cumsum() 是 Python 中的一個內建函式,它遵循 numpy 模組來新增給定列表的可迭代元素。此函式主要用於 Python 資料框中,計算每一行的累積和。

tolist()

tolist() 是 Python 中的一個內建函式,返回一系列列表。

使用迴圈

在以下示例中,程式使用一個遞迴函式,該函式呼叫自身。然後在變數 result 中使用空列表,該變數將在函式返回期間儲存程式的最終輸出。接下來,將 current_sum 的初始值初始化為 0,這將用於設定第一個索引元素。然後使用 for 迴圈,透過使用 += 和 append() 迭代輸入列表以計算增量子列表求和。最後,使用函式返回獲取結果。

示例

def Inc_sublist_sum(lst):
    result = []
    current_sum = 0
    for num in lst:
        current_sum += num
        result.append(current_sum)
    return result
lst = [100, 50, 120, 60, 30, 40]
increment_sum = Inc_sublist_sum(lst)
print(increment_sum)

輸出

 [100, 150, 270, 330, 360, 400]

使用列表推導式

在以下示例中,將使用列表推導式,其中內建函式 sum() 設定切片符號以新增增量子列表求和。使用 for 迴圈,它迭代列表的長度並返回結果。

示例

def Inc_sublist_sum(lst):
    return [sum(lst[:i+1]) for i in range(len(lst))]
# Create the list
lst = [78, 10, 88, 20]
increment_sum = Inc_sublist_sum(lst)
print(increment_sum)

輸出

 [78, 88, 176, 196]

使用 Itertools 中的 Accumulate

在以下示例中,我們將從定義庫 itertools 並匯入名為 accumulate 的模組開始程式。接下來,它將使用遞迴函式,該函式提供 Python 內建函式 accumulate(),該函式會自動新增到可迭代元素中,並使用 list() 返回程式的輸出。

示例

from itertools import accumulate
# recursive function
def Inc_sublist_sum(lst):
    return list(accumulate(lst))
# create the list
lst = [23, 43, 10]
# calling function
res = Inc_sublist_sum(lst)
print(res)

輸出

 [23, 66, 76]

使用 Numpy

在以下示例中,我們將從匯入名為 numpy 的模組並獲取物件引用作為 np 開始程式。然後,它將使用遞迴函式,其中它設定內建函式 cumsum() 和 tolist() 來計算增量子列表求和並返回結果。

示例

import numpy as np
# Recursive function
def Inc_sublist_sum(lst):
    return np.cumsum(lst).tolist()
# Create the list
lst = [11, 21, 31, 41, 51]
increment_sum = Inc_sublist_sum(lst)
print(increment_sum)

輸出

 [11, 32, 63, 104, 155]

結論

以上所有示例都表示增量子列表求和,其中使用了一些可迭代的內建函式,如 accumulate()、sum()、cumsum() 和 tolist()。理解此示例的最佳方法是使用簡單的 += 運算子,它有助於新增列表的可迭代元素。

更新於: 2023-08-14

149 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告