Python - 使用切片獲取列表最後 K 個元素的和


在 Python 中,切片方法允許我們從序列(例如字串、列表或元組)中提取特定的元素。它提供了一種簡潔靈活的方式來處理較長序列中的子序列。在本文中,我們將探討如何使用切片操作獲取列表中最後 K 個元素的和。

演算法

要查詢列表中最後 K 個元素的和,我們可以遵循一個簡單的演算法:

  • 接受列表和 K 的值作為輸入。

  • 使用切片運算子從列表中提取最後 K 個元素。

  • 計算提取元素的和。

  • 將和作為輸出返回。

語法

sequence[start:end:step]

這裡,切片方法接受三個可選引數:

  • 開始 (可選):切片應該開始的元素的索引。如果未提供,則預設為序列的開頭。

  • 結束 (可選):切片應該結束的元素的索引(不包括)。如果未提供,則預設為序列的末尾。

  • 步長 (可選):選擇元素的步長或增量值。如果未提供,則預設為 1。

開始、結束和步長值可以是正整數或負整數,允許您以向前和向後兩個方向遍歷序列。

示例 1:使用切片方法計算最後 K 個元素的和

透過在切片中指定負索引,我們可以從列表的末尾開始並向後移動。以下是使用切片獲取列表最後 K 個元素的和的語法:

在下面的示例中,我們有一個包含 10 個元素的列表 my_list。我們想要找到列表中最後 4 個元素的和。透過使用切片運算子 [-K:],我們指定從倒數第四個元素到列表末尾的範圍。然後,sum() 函式計算提取元素的和,結果為 280。

my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
K = 4
sum_of_last_k = sum(my_list[-K:])
print("Sum of last", K, "items:", sum_of_last_k)

輸出

Sum of last 4 items: 340

示例 2:使用 collections 模組中的 tail 函式

collections 模組中的 tail 函式是用於從序列中提取最後 N 個元素的便捷方法。它允許您避免使用負索引進行切片。

在下面的示例中,我們從 collections 模組匯入 deque 類,並將所需的最大長度 (maxlen) 指定為 N。透過將 numbers 列表和 maxlen=N 傳遞給 deque,我們建立一個僅保留最後 N 個元素的 deque 物件。使用 list(tail_elements) 將 deque 物件轉換為列表,使我們能夠獲得尾部元素 [6, 7, 8, 9, 10]。

from collections import deque

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
N = 5
tail_elements = deque(numbers, maxlen=N)
print(list(tail_elements))

輸出

[6, 7, 8, 9, 10]

示例 3:使用 itertools 模組中的 islice 函式

itertools 模組中的 islice 函式允許您透過提供開始、停止和步長值來從可迭代物件(例如列表或字串)中提取特定的子序列。

在下面的示例中,我們從 itertools 模組匯入 islice 函式。透過將 numbers 列表以及開始、停止和步長值傳遞給 islice(numbers, start, stop, step),我們提取所需的子序列 [6, 8, 10]。使用 list(islice(...)) 將結果轉換為列表,使我們能夠列印子序列。

from itertools import islice

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
start = 5
stop = 10
step = 2
subsequence = list(islice(numbers, start, stop, step))
print(subsequence)

輸出

[6, 8, 10]

結論

在本文中,我們討論瞭如何使用切片方法獲取最後 k 個元素的和。切片方法提供了一種簡潔高效的方式來執行此類計算,並使獲取列表最後 K 個元素的和的任務變得容易。切片方法也可用於其他目的,例如提取子序列、使用步長值跳過元素、反轉序列、獲取最後 K 個元素等。

更新於: 2023-07-18

453 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告