forループでリスト作るのめんどくさいぞ
2の累乗のリストを作るとする
forループを使うと
a = []
for i in range(1,11):
a.append(i*2)
print(a)
まあまあめんどくさい
これをリスト内包表記で書くと
a = [i*2 for i in range(1,11)]
print(a)
となる
一行で書けてしまう圧倒的スマートさ
かっこいい。
慣れるまで少し時間がかかるかもしれないが、使いこなせればめちゃ便利
リスト内包表記の書き方を学ぼう
文法としては
[式 for iなどの任意の変数 in range()などの範囲指定]
となる
いくつかの使用例を下記にまとめる
b = [1 for i in range(10)]
print(b)
# [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
c = ["5" for i in range(10)]
print(c)
# ['5', '5', '5', '5', '5', '5', '5', '5', '5', '5']
d = [int(i) for i in c]
print(d)
# [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
(実際これらは指摘していただいた通り、他のやり方で十分かのうではある
pythonを触っていて内包表記でやると便利だった、と思ったことをこれからもここに追加していくとする)
最初に書く式というのは数式でもいいし文字でもいいし関数でもいい
リストcで'5'を十個格納したリストを作った、これをdでは全てをint型に直している
この時、range()を使わなくとも、cと書けばリストcの要素分forを回してくれる