リスト内包表記でできないかもしれないこと
リスト内包表記
リスト内包表記とは,(定義はわからないが)forループの結果をそのままリストにする書き方であり,ちょっとした応用的なpython独特の文法らしい.
内包表記を使わずにリストを定義→forループ→リストにappend,とやるより速度がだいぶ速いらしい.
基本的な書き方は,
num_list = [i for i in range(3, 10, 2)] # -> [3, 5, 7, 9]
内包表記にif条件を追加する場合,if文は末尾につける.
num_list = [i for i in range(3, 10, 2) if i % 3 == 0] # -> [3, 9]
さらにelseをつける場合は末尾ではなく,条件式の順序が入れ替わって前に出る.
num_list = [i if i % 3 == 0 else i * 2 for i in range(3, 10, 2)] # -> [3, 10, 14, 9]
elifは使えず,代わりにelseの後にif文を続ける.
num_list = [i if i % 3 == 0 else i * 2 if c % 5 == 0 for i in range(3, 10, 2)] # -> [3, 10, 9]
詳しい説明は数多のサイトがあるので省略.
できなかったこと
冒頭にpass文を置いて特定の条件の場合を飛ばすこと.
num_list = [pass if i % 3 == 0 else i * 2 for i in range(3, 10, 2)] # -> [10, 14] となるはずが # -> syntax error