2017-11-04 100 views
0

私はalist = ['4', '1.6', 'na', '2e-6', '42']のようなpythonリストを持っています。私は、リスト内の要素の一つ、このよう文字列'na'を持っているように、pythonリストの要素から引用符を削除する

alist = [float(x) if type(x) is str else None for x in alist] 

しかし、この時間:私はこのから引用符を削除し、それが[4, 1.6, na, 2e-6, 42]のように見えるようにしたい場合は、通常、私は次のコードを使用しますコード行は機能しません。これを行うにはエレガントな方法はありますか?浮くために何を変換します

def converter(x): 
    try: 
     return float(x) 
    except ValueError: 
     return None 

alist = [converter(x) for x in alist] 

この:

+0

リストの要素はすべて、まだ同じ型で、

編集? – nbro

+0

何らかの理由で私は多くの大きなリストを持っており、価値がないときはいつでも、nanの代わりにnaまたはnoと表示されます。 どの文字でも可能かどうかを知りたい! – Pia

+0

リストに「na」が含まれていると、アルゴリズムが生成すると思われるものは何ですか? – nbro

答えて

1

あなたがより一般的にNoneで値'na'を置き換える、またはに満足していると仮定すると、任意の非フロートはNoneでテキストを探して、あなたのような何かを行うことができますできる。だから、そのままで、これも浮くように既存の番号を変換します:

Pythonのリスト、セット、dictsなどがプリントアウトされ
>>> [converter(x) for x in ('1.1', 2, 'na')] 
[1.1, 2.0, None] 
+0

ありがとう、これは完璧に動作します:) – Pia

0

、それらはPythonは「生のコンパイルに使用するのと同じ形式で印刷されていますコード。" Pythonはリストを引用符でコンパイルします。だから、あなたはリストを反復する必要があります。 (それは本当にあなたがTkinterのウィジェットか何かに表示されていない限り、あまり効果を持っているdoens'tが)

だけでこの問題を解決するためにジェネレータ式を使用します。

>>> alist = ['4', '1.6', 'na', '2e-6', '42']  

>>> for a in alist: 
... print(a) 

>>> 4 
>>> 1.6 
>>> na 
>>> 2e-6 
>>> 42 

私はここで、「NAわからないんだけど"、" nan "の混乱が起こっています。それにかかわらず、引用符をなくしたい場合は、ジェネレータ式を使用してコードを実行すると、それはもはや「リストクラス」の下にはなくなり、引用符は表示されなくなります。あなたが代わりにna` `の` nan`を意味明瞭さ、文法

+0

明確な説明をありがとう:) – Pia

関連する問題