2017-01-24 3 views
0

文字列とint/floatを1つの配列から区切ってみるのに問題があります。これまでのところ私は、特定の文字列または数値ではなく、データ型をリストから/エキスを削除する方法を見つけることができる:(リストからデータ型を分離する方法は?

入力:

a = [1,2,3,'a',4,11,212,'a','b','c',3,32,4,'d','e'] 

所望の出力:

['a','a','b','c','d','e'] 
+0

可能な複製:リストからintに変換可能でない項目を削除するクリーンで効率的な方法](http://stackoverflow.com/questions/29913324/python-clean-and-efficient-way-to-remove-items-that-are-not-convertable-to-int) –

答えて

3

のPythonオブジェクトが指定されたタイプのものであるかどうかをチェックするisinstance()機能を持っています。
Btwあなたの指定されたリストが正しくありません! 、あなたはあまりにも慣用的な方法を使用することができ、このシナリオを実現する多くの方法があります

>>> l = [1, 2, 3, 'a', 4, 11, 212, 'a', 'b', 'c', 3, 32, 4, 'd', 'e'] 
>>> [item for item in l if isinstance(item, str)] 
['a', 'a', 'b', 'c', 'd', 'e'] 
+0

投稿を編集しました。助けてくれてありがとう!まだPythonには新しい。ハハ – adam

+0

あなたが気にしないならば、もう1つの質問。 lがnp.array()として宣言されている場合、配列内のすべての要素が文字列型であるため、コードは機能しません。 これには方法がありますか? – adam

1

あなたが使用することができますtype()異なるデータタイプを区別する機能

+1

https://docs.python .org/3/library/functions.html#type – Craicerjack

+0

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

1

a = [1,2,3,'a',4,11,212,'a','b','c',3,32,4,'d','e'] 
[x for x in a if type(x)==str] 

出力は次のとおりです。

['a', 'a', 'b', 'c', 'd', 'e'] 
0

a = [1,2,3,'a',4,11,212,'a','b','c',3,32,4,'d','e'] 

print [item for item in a if type(item) is str] 

Output list: ['a', 'a', 'b', 'c', 'd', 'e'] 
[パイソンの
関連する問題