2016-12-22 2 views
0

У меня есть список элементов юникода, и я пытаюсь удалить из него все целые числа. Мой код:Python удаляет все числа из списка

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

Этот список состоит из строк unicode, которые не являются примерами 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

Thanks Simon !!! Это хорошо! – CosimoCD

+0

вы можете просто 'list_with_removed = filter (repr_int, original_list)' –

+0

Да, конечно! Некоторые руководства по стилю препятствуют использованию этого функционального стиля, хотя и поощряют использование списков. Поскольку мне нравится Haskell, «фильтр» тоже будет моим выбором, но я стараюсь придерживаться руководств по стилю, когда это возможно. –

Смежные вопросы