1. ホーム
  2. リスト

[解決済み】大きなリストの中のn番目の項目のリストを返すPythonicな方法

2022-04-10 06:44:26

質問

0から1000までの数字のリストがあるとします。最初の項目とそれ以降のすべての10番目の項目のリストを生成する pythonic/ 効率的な方法はありますか、すなわち、次のようになります。 [0, 10, 20, 30, ... ] ?

しかし、これを1行でできるような、もっとすっきりした方法はないでしょうか?

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

>>> lst = list(range(165))
>>> lst[0::10]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160]

これは、ループして各要素のモジュラスをチェックするよりも約100倍高速であることに注意してください。

$ python -m timeit -s "lst = list(range(1000))" "lst1 = [x for x in lst if x % 10 == 0]"
1000 loops, best of 3: 525 usec per loop
$ python -m timeit -s "lst = list(range(1000))" "lst1 = lst[0::10]"
100000 loops, best of 3: 4.02 usec per loop