「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 元のリストから N 番目ごとの項目を含む新しいリストを生成するにはどうすればよいですか?

元のリストから N 番目ごとの項目を含む新しいリストを生成するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:153

How to Generate a New List with Every Nth Item from an Original List?

元のリストから N 番目ごとの項目を含むリストを作成する

データ分析やプログラミングでは、多くの場合、次のサブセットを操作する必要があります。リスト。一般的なタスクの 1 つは、元のリストの 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 番目ごとの項目を含む新しいリストを作成する際のシンプルさとパフォーマンスの両方の利点を提供します。

リリースステートメント この記事は次の場所に転載されています: 1729392499 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3