私にはarray = ["3", "5", "3", "", "1"]
があります。どのように数値に変換するかは、Pythonでは1行でNoneでなければなりません。文字列を数値に変換する
私は[float(num) for num in array if num != ""]
のようなものを試しましたが、これはスキップしました。
私にはarray = ["3", "5", "3", "", "1"]
があります。どのように数値に変換するかは、Pythonでは1行でNoneでなければなりません。文字列を数値に変換する
私は[float(num) for num in array if num != ""]
のようなものを試しましたが、これはスキップしました。
リストの中のfor
の右側の文は、のフィルタの式です。
あなたはフィルタをしたくないので、あなたは三元表現たい、どんな値を発行しないようにしたい:、num
が文字列であるため、
[float(num) if num else None for num in array]
を(あなたがnum != ""
を省略することができません
[3.0, 5.0, 3.0, None, 1.0]
空文字列を厳密にチェックせずに単純に 'if num'にすることもできます。 – CasualDemon
@CasualDemonいいえ、はい、入力は文字列ではないためです。あなたが正しい。 –
シンプル:その結果、それは同等と短いですので、フロートや整数、)
リストの理解度:
num_list = [float(e) if e else None for e in map(lambda x: x.strip(), array)]
変換する前に、先頭または末尾のスペースがないように文字列を削除します。
"これは" "にマップされ、if
を使用して確認することができます。
なぜdownvote? –
DVerではありませんが、要求されたOPのように空の文字列を 'None'に置き換えません。 – Wondercricket
@Wondercricket Edited。ありがとうございました。 –
あなたはこれを試すことができます。
array = ["3", "5", "3", "", "1"]
final_list = [int(i) if i else None for i in array]
出力:あなたがNone
かいないに等しくなるように""
をしたい場合は
[3, 5, 3, None, 1]
私は確認されませんでした。あなたはちょうどその""
をドロップしたい場合は
:
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]
'[フロート(NUM)= "" のために他なし配列内の数値] –
ああ、私はダムです、ありがとうございます:) –