pythonってすごいね

RNAseqを用いた遺伝子発現量解析、機械学習を用いた回帰、分類などの解析を中心に記事を書いていきたいです!

リスト内表記とは?

私自身、これまでも、これからも使うかはわかりませんが、リスト内表記についてまとめたいと思います。

まず、リスト内表記とは??? こんな感じです↓

a=[True if i >4 else False for i in range(10)]

正直、初めて見た時はpythonだと思えませんでした(笑)

どういう時に使う?

[chat face="icons8-python-480.png" name="pyてょん" align="right" border="blue" bg="none"] 簡潔に言うと、スクリプトを省略できます! [/chat]

例えば、このように繰り返し文を書いた場合

a=[] #空のリストを作成
for i in range(5):
       a.append(i) #リストに文字を追加指定いく
print(a)

-> [0, 1, 2, 3, 4]

リスト内表記では

a=[i for i in range(5)]
print(a)

-> [0, 1, 2, 3, 4]

[chat face="icons8-python-480.png" name="pyてょん" align="right" border="blue" bg="none"] 一文でかけます [/chat]

[chat face="daruma_.png" name="python大好き" align="left" border="blue" bg="none"] 便利じゃん![/chat]

シンプル版

[#リストに入れる部分 for #任意の関数 in #くり返し分の範囲]

[i for i in range(5)]ならば、iが0から5まで出力され、そのままリストに入れる。

2倍してからリストに入れたい場合

[a*2 for i in range(5)]
-> [0, 2, 4, 6, 8]

 

if がある場合

[chat face="icons8-python-480.png" name="pyてょん" align="right" border="blue" bg="none"] if文は一番後ろに入れる![/chat]

a=[i for i in range(5) if i >=3]
print(a)

-> [3, 4]

if else の場合

[#真の場合 if #条件式 else #偽の場合 for i in range(5) ]

a=[True if 3>= i else False for i in range(5)]
print(a)

-> [True, True, True, True, False]

0,1,2,3,4とiが出力されるので、iが3以下ならリストにTrueを加える、それ以外ならFalseを加える

[chat face="daruma_.png" name="python大好き" align="left" border="blue" bg="none"] ちょっと複雑ー[/chat]