1. ホーム
  2. python

[解決済み] Pythonの配列から偶数/奇数行をスライスする最短の方法?

2023-05-08 20:15:17

質問

偶数/奇数の場合は1行飛ばしますが、一般的な場合はn-1行を飛ばして、n行ごとに取得したいと思います。

どのように解決するのか?

について話していると仮定して リスト であるとすると、スライス内のステップ(および開始インデックス)を指定します。構文は次のとおりです。 list[start:end:step] .

項目を取得するための通常のリストアクセスはご存知でしょう、例えば l[2] で 3 番目の項目を取得します。2 つの数字と間にコロンを与えることで 範囲 を指定することができる。戻り値は別のリストである。例 l[2:5] は 3 番目から 6 番目の項目を与える。また、オプションで 3 番目の数値を渡すことができ、これはステップの大きさを指定する。デフォルトのステップサイズは1であり、これは単に すべての項目を取得する (開始インデックスと終了インデックスの間) を取ることを意味します。

>>> l = range(10)
>>> l[::2]         # even  - start at the beginning at take every second item
[0, 2, 4, 6, 8]
>>> l[1::2]        # odd - start at second item and take every second item
[1, 3, 5, 7, 9]

参照 リストを参照してください。 .

もし、すべての n -th というようにスライスする必要があります。 l[(n-1)::n] .

例です。

>>> l = range(20)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

さて、3つ目の要素ごとに取得すると

>>> l[2::3]
[2, 5, 8, 11, 14, 17]

最初の要素を含めたい場合は、単に l[::n] .