添え字アクセスするか
Python
1for i in result:
2 if i[0] >= 0.1:
3 print(i[0])
第一要素以外を読み捨てるか
Python
1for i, *_ in result:
2 if i >= 0.1:
3 print(i)
イテレータをいじるか
Python
1for i in map(lambda x: x[0], result):
2 if i >= 0.1:
3 print(i)
前もってresultを書き換えてしまうか
Python
1result = list(map(lambda x: x[0], result))
よく考えたら、result = next(zip(*result))
でも行けますね。
コメントを受けて
1点質問がありまして、2つ目の第一要素以外を読み捨てるかにある「*_」は
どのような意味でしょうか??
確かにこれfor x, *_ in hoge:
は初めて見たら戸惑うでしょうね。
アスタリスクの役割
Pythonでは、タプルやリストなどのシーケンスの値を、次のように受け取ることが出来ます。
ただし、最後の行を見てわかるように、要素が一対一対応していなければいけません。
Python
1>>> a, b, c = [1, 2, 3]
2>>> a
31
4>>> b
52
6>>> c
73
8>>> a, b = [1, 2, 3]
9Traceback (most recent call last):
10 File "<stdin>", line 1, in <module>
11ValueError: too many values to unpack (expected 2)
ここで、ある程度まとめて要素を受け取りたいときは、次のように書きます。
Python
1>>> a, *b = [1, 2, 3]
2>>> a
31
4>>> b
5[2, 3]
これで、アスタリスクの役割はわかりましたね。
以前これについて詳しく回答したことがあるので、そちらを見ると理解が深まるかもしれません。
teratail - a,b=hogeというような代入される値が二つあるものの意味
アンダーバーの意味
Pythonの仕様上、アンダーバー単体の命名が認められています。
ですので、ただの変数と思っていただいて大丈夫です。
Python
1>>> _ = 10
2>>> _
310
ただし、習慣上**『その場で捨てる値』**を示すことが多いです。(REPLを除く)
これについても、以前回答したことがあります。
teratail - tensorflowでアンダースコア(_)に格納する意味
つまり?
Python
1for i, *_ in result:
2 if i >= 0.1:
3 print(i)
「一個目の要素だけほしいな。後は何個あるかわからないけど、とりあえずいらないや」って意味です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/16 08:38
2017/11/16 08:54
2017/11/16 09:24
2017/11/16 09:41 編集
2017/11/16 09:45
2017/11/16 12:15
2017/11/16 12:19
2017/11/16 12:21