2013-03-20 7 views
0

В питона, Что является наиболее предпочтительным (вещий) способ сделать следующее:элегантный список манипуляция в питона

Вам предоставляется список. Если список не пуст, все элементы в списке гарантированно будут строками. Каждый элемент в списке является либо пустой строкой, либо гарантированно возвращает True, если вызывается isdigit().

Начиная с такого списка, что является самым элегантным способом в конечном итоге с таким списком, что он содержит все элементы из исходного списка, за исключением пустых строк?

+1

Я думаю, что я пытался не имеет никакого отношения к этому вопросу. – chefsmart

+0

Возможно, это было актуально. И хорошо показать, что вы приложили все усилия, чтобы попробовать это в первую очередь. –

+0

Вы говорите, что это могло быть актуальным, но вы не говорите, как это сделать. Поэтому позвольте мне спросить об этом - как именно это могло быть важно? И почему вы предполагаете, что ответ зависит от того, какие усилия я предпринял в первую очередь? – chefsmart

ответ

6

Использование filter() с функцией тождества по умолчанию (None):

newlist = filter(None, origlist) 

в качестве альтернативы, список понимание:

newlist = [el for el in origlist if el] 
+0

Спасибо, но какой из них вы бы выбрали? – chefsmart

+0

@chefsmart: Python 2: 'filter()'. Python 3: 'filter()' или понимание списка, в зависимости от того, будет ли выполняться итератор или если у меня есть *, чтобы иметь список. –

+0

@chefsmart Я бы сказал, что это спорное решение, хотя большинство людей ручаться за второй, потому что они думают, что 'filter' не так ясно. Мне нравится первый. Его также можно записать как 'filter (bool, origlist)' – jamylak

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