以原始清單中的每 N 個項目建立清單
在資料分析或程式設計中,通常需要使用清單。一項常見任務是建立一個僅包含原始清單中每第 N 個項目的新清單。例如,給定一個從 0 到 1000 的整數列表,我們如何獲得一個僅包含第一個和後續第 10 個項目的列表?
使用傳統的 for 循環,我們可以如下完成此任務:
xs = list(range(1001))
new_list = []
for i, x in enumerate(xs):
if i % 10 == 0:
new_list.append(x)
然而,使用Python的切片可以提供更簡潔、更有效率的方法:
>>> xs = list(range(1001))
>>> new_list = xs[0::10]
在此解決方案中,xs[0::10] 表達式建立一個新列表,其中包含從索引0 開始的每10 個專案.結果是一個包含 [0 , 10, 20, 30, ..., 1000] 無需循環或條件檢查。
此方法明顯快於 for 迴圈方法,在處理大型清單時證明是有利的。如以下時間比較所示:
$ python -m timeit -s "xs = list(range(1000))" "[x for i, x in enumerate(xs) if i % 10 == 0]"
500 loops, best of 5: 476 usec per loop
$ python -m timeit -s "xs = list(range(1000))" "xs[0::10]"
100000 loops, best of 5: 3.32 usec per loop
這種使用切片的優化方法為使用原始列表中的每N 個項目創建新列表提供了簡單性和性能優勢。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3