2016-12-22 11 views
0

私はunicode要素のリストを持っています。私はそれからすべての整数を削除しようとしています。 私のコードは次のとおりです。リストからすべての数字を削除する

List = [u'123', u'hello', u'zara', u'45.3', u'pluto'] 

for el in List: 
    if isinistance(el, int): 
     List.remove(el) 

コードは動作しません、それはu'123' と私に同じリストを与えるを含みます。 私が必要としているのはこれです:

List = [ u'hello', u'zara', u'45.3', u'pluto'] 

誰かが私ですか?

答えて

2

リストは明らかにintのインスタンスではないユニコード文字列で構成されています。ヘルパー関数でintに変換し、これを削除する条件として/を使用して、新しいリストを作成することができます。

def repr_int(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 

original_list = [u'123', u'hello', u'zara', u'45.3', u'pluto'] 

list_with_removed_ints = [elem for elem in original_list if not repr_int(elem)] 
+0

ありがとうSimon !!!それは良いwoks! – CosimoCD

+0

あなたは単純に 'list_with_removed = filter(repr_int、original_list)' –

+0

することができますはい、確かに!一部のスタイルガイドでは、この機能スタイルの使用を推奨していません。代わりにリスト内包表記を使用することをおすすめします。私はHaskellが好きなので、 'filter'も私の選択ですが、可能な限り、スタイルガイドを忠実に守ろうとします。 –

関連する問題