2016-05-02 3 views
0

У меня есть следующий список: [['F', 'G', 'C'], ['S', 3, 7], ['C', 3, 'D']] (состоящий из 3-х подсписков)Python, удалить все номера из подсписка

Но я хочу иметь: [['F', 'G', 'C'], ['S'], ['C', 'D']]

Как бы я идти об этом?

+0

@Bahrom как я форматировать список? –

+1

Есть ли в вашем списке 3 подсписка или 3 строки? – Bahrom

+0

Есть 3 подписок –

ответ

0

Используйте список понимание:

my_list = [['F', 'G', 'C'], ['S', 3, 7], ['C', 3, 'D']] 
no_numbers = [[item for item in sub_list if not isinstance(item, int)] 
       for sub_list in my_list] 
print(no_numbers) 

Печатается:

[['F', 'G', 'C'], ['S'], ['C', 'D']] 
+1

Или 'if isinstance (item, basestring)' –

+0

@AlexHall правильно, я просто хотел следовать по рассматриваемой логике, фигура 'not isinstance int' будет лучше работать для удаления чисел (целые числа, я полагаю, в этом случае). – Bahrom

+1

Согласен, просто указывая на разные идеи. –

-1
mylist = [['F', 'G', 'C'], ['S', 3, 7], ['C', 3, 'D']] 
newlist = [[x for x in mysublist if not isinstance(x, int)] for mysublist in mylist] 
print newlist 

Есть несколько способов добиться этого. В приведенном выше примере используется понимание списка.

+0

что делать, если у меня есть подсписок? как в вопросе @sudhishkr –

+0

выглядит как вопрос, который был изменен. @abcla - проверка pls перед подачей '-1' :) – sudhishkr

0

Это код Python 3:

mylist = [['F','G','C'], ['S',3,7], ['C',3,'D']] 
rslist = [[y for y in x if not isinstance(y, int)] for x in mylist ] 
print (rslist) 
Смежные вопросы