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()。理解此示例的最佳方法是使用簡單的 += 運算子,它有助於新增列表的可迭代元素。