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

Mary-Kate Olsen
リリース: 2024-10-20 10:56:02
オリジナル
658 人が閲覧しました

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

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

データ分析やプログラミングでは、多くの場合、次のサブセットを操作する必要があります。リスト。一般的なタスクの 1 つは、元のリストの 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!