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 個元素等。