1. 指定要素を取得する。(インデックス指定)
- 要素番号(インデックス)は0から開始。
- 負の要素番号は-1から開始。後ろから数えて、指定位置の要素を取得。
$ list = ['A', 'B', 'C', 'D', 'E']
list[0]
# 'A'
list[1]
# 'B'
list[2]
# 'C'
list[-1]
# 'E'
list[-2]
# 'D'
2. リストの一部を取得する。(スライシング)
-
[開始番号:終了番号:ステップ数]
と指定。終了番号の要素は含まれない。 - 開始番号省略時は、最初の要素から取得。
- 終了番号省略時は、最後の要素まで取得。
- ステップ数省略時は、1(1個ずつ)が指定。
list = ['A', 'B', 'C', 'D', 'E']
list[3:]
# ['D', 'E']
list[:3]
# ['A', 'B', 'C']
list[::-1]
# ['E', 'D', 'C', 'B', 'A']
list[1:4:2]
# ['B', 'D']
list[4:1:-2]
# ['E', 'C']
3. クエリで取得する。(内包表記)
-
[要素の加工コマンド for 要素名 in リスト if 抽出条件]
と指定。if以降は省略可能。 - 「in」の箇所で
enumerate(リスト)
を指定すると、各要素を「要素番号, 要素」の組合せで取得。 - 「in」の箇所で
zip(リスト1, リスト2)
を指定すると、各要素を「リスト1の要素, リスト2で同位置の要素」の組合せで取得。 -
{ }
で囲った場合はセットや辞書、( )
で囲った場合はジェネレータが返却。
list = ['A', 'B', 'C', 'D', 'E']
list2 = ['F', 'G', 'H', 'I', 'J']
[x.lower() for x in list]
# ['a', 'b', 'c', 'd', 'e']
[x.lower() for x in list if x!='B']
# ['a', 'c', 'd', 'e']
[str(i) + x for i, x in enumerate(list)]
# ['0A', '1B', '2C', '3D', '4E']
[x + y for x, y in zip(list, list2)]
# ['AF', 'BG', 'CH', 'DI', 'EJ']
{x.lower() for x in list}
# {'a', 'b', 'c', 'd', 'e'} ※セット
{x:x.lower() for x in list}
# {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd', 'E': 'e'} ※辞書
(x.lower() for x in list)
# <generator object <genexpr> at ?> ※ジェネレータ
備考
本記事はブログ「雑用エンジニアの技術ノート」からの移行記事です。先のブログは削除予定です。