2017-10-10 1 views
2

私にはarray = ["3", "5", "3", "", "1"]があります。どのように数値に変換するかは、Pythonでは1行でNoneでなければなりません。文字列を数値に変換する

私は[float(num) for num in array if num != ""]のようなものを試しましたが、これはスキップしました。

+2

'[フロート(NUM)= "" のために他なし配列内の数値] –

+0

ああ、私はダムです、ありがとうございます:) –

答えて

3

リストの中のforの右側の文は、のフィルタの式です。

あなたはフィルタをしたくないので、あなたは三元表現たい、どんな値を発行しないようにしたい:、numが文字列であるため、

[float(num) if num else None for num in array] 

を(あなたがnum != ""を省略することができません

[3.0, 5.0, 3.0, None, 1.0] 
+2

空文字列を厳密にチェックせずに単純に 'if num'にすることもできます。 – CasualDemon

+0

@CasualDemonいいえ、はい、入力は文字列ではないためです。あなたが正しい。 –

0

シンプル:その結果、それは同等と短いですので、フロートや整数、)

リストの理解度:

num_list = [float(e) if e else None for e in map(lambda x: x.strip(), array)] 

変換する前に、先頭または末尾のスペースがないように文字列を削除します。

"これは" "にマップされ、ifを使用して確認することができます。

+0

なぜdownvote? –

+1

DVerではありませんが、要求されたOPのように空の文字列を 'None'に置き換えません。 – Wondercricket

+0

@Wondercricket Edited。ありがとうございました。 –

0

あなたはこれを試すことができます。

array = ["3", "5", "3", "", "1"] 

final_list = [int(i) if i else None for i in array] 

出力:あなたがNoneかいないに等しくなるように""をしたい場合は

[3, 5, 3, None, 1] 
0

私は確認されませんでした。あなたはちょうどその""をドロップしたい場合は

array = ["3", "5", "3", "", "1"] 
print [float(x) for x in array if x] 
// result: [3.0, 5.0, 3.0, 1.0] 

交換したい場合は""Noneで!:もしNUM

array = ["3", "5", "3", "", "1"] 
print [float(x) if x else None for x in array] 
// result: [3.0, 5.0, 3.0, None, 1.0] 
関連する問題