問題
何が表示されますか?
decimal = range(0, 90, 2) my_decimal = decimal[::10] length = len(my_decimal) print(length)
答え
5 が表示されます。
解説
rangeオブジェクトにはスライスが使えます。
range(0, 90, 2)[::10]と書くと、range(0, 90, 20)という意味になります。
言われてみれば確かに使える気がしてくるので、ドキュメントを読んでみます。
range オブジェクトは
Python標準ライブラリ 組み込み型 rangecollections.abc.Sequence
ABC を実装し、包含判定、要素インデックス検索、スライシングのような機能を提供し、負のインデックスをサポートします (シーケンス型 — list, tuple, range を参照):
バージョン 3.2 以降使うことができます。
バージョン 3.2 で変更: シーケンス ABC を実装。スライスと負のインデックスのサポート。
Python標準ライブラリ 組み込み型 rangeint
オブジェクトの帰属判定を、すべてのアイテムをイテレートする代わりに、定数時間で行います。