使用原始清單中的每N 個項目建立一個清單
在資料分析或程式設計中,通常需要使用下列子集一個清單。一項常見任務是建立一個新列表,其中僅包含原始列表中的每第 N 個項目。例如,給定一個從 0 到 1000 的整數列表,我們如何獲得一個僅包含第一個和後續第 10 個項目的列表?
使用傳統的for 循環,我們可以如下完成此任務:
<code class="python">xs = list(range(1001)) new_list = [] for i, x in enumerate(xs): if i % 10 == 0: new_list.append(x)</code>
但是,使用Python 的切片可以提供更簡潔、更有效率的方法:
<code class="python">>>> xs = list(range(1001)) >>> new_list = xs[0::10]</code>
在此解決方案中,xs[0::10] 表達式建立一個新列表,包括從索引0 開始的每10 項。結果是一個包含 [0, 10, 20, 30, ..., 1000] 的列表,無需循環或條件檢查。
此方法明顯更快與 for 迴圈方法相比,在處理大型清單時證明是有利的。如以下時間比較所示:
<code class="python">$ 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</code>
這種使用切片的最佳化方法為使用原始清單中的每 N 個項目建立新清單提供了簡單性和效能優勢。
以上是如何從原始清單中每第 N 個項目產生一個新清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!