Pythonのリストに関する基本的な操作(リストに要素を入れるなど)はできるようになったのですが、競プロではもっと簡潔な書き方をしている人が多いらしいことに気がつきました。
そこで、リストを簡潔に扱うコードや使いやすい小技を調べてまとめました。
リスト内包表記
「〇〇の間」で「△△な操作を繰り返してリストに格納する」という処理を一行で書くための表記。
まずこういった処理をリスト内包表記を使わず書くと以下のようになる。
list = []
for i in range(10): # i が0-9の間
i = i * 2 # iに2をかけるという操作
list.append(i) # 処理を行ったiをリストに加える
print(list) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
このコードでは10回操作を繰り返してリストに入れるまで3行使っている。
しかしリスト内包表記を使うことにより、以上を1行でまとめることができる。
list = [i * 2 for i in range(10)]
print(list)
リストの最後の要素のみを取り出す
list = [1, 2, 3, 4, 5]
print(list[-1]) # 5
マイナスをつけると「最後の要素から何番目か」という意味になるらしい。例えば上記のコードで-2を指定すると4が表示される。
listのカッコを外す
list = [1, 2, 3, 4, 5]
print(*list) # 1 2 3 4 5
*
をつけられているものはリスト扱いできないらしく*list[0]
などとするとエラーが出る。
【以下コメントを受けての追記】
上記では*
をつけることにより引数展開をしているらしい。
リストやタプルでは*
を、辞書では**
を用いる。
リストに要素を追加する
appendを使わず、リストに要素を追加することが可能。
list = [1, 2, 3]
list += [4, 5]
print(list) # [1, 2, 3, 4, 5]
参考文献
かわさきしんじ. "[Python入門]リストの基本". 2019/05/31. https://atmarkit.itmedia.co.jp/ait/articles/1905/31/news015_4.html, (2022/11/22).
AI Academy運営事務局. "【初心者向け】Python リスト内包表記とは?わかりやすく解説!". AI Academy Media. 2022/04/05. https://aiacademy.jp/media/?p=1252, (2022/11/22).
"Pythonのリスト(list)の基本的な操作方法やメソッドの一覧をまるっと解説!". TRAINOCAMP. 2022/10/18. https://camp.trainocate.co.jp/magazine/python-list/#3 , (2022/11/22).
"Pythonで関数の引数にリスト、タプル、辞書を展開して渡す". note.nkmk.me. 2021/09/17. https://note.nkmk.me/python-argument-expand/ , (2022/11/22).
かわさきしんじ. "[解決!Python]リスト(配列)の使い方まとめ". 2020/12/25. https://atmarkit.itmedia.co.jp/ait/articles/2012/25/news023.html#addbyops, (2022/11/22).