Извлечь все элементы из первого нечислового элемента - PullRequest
2 голосов
/ 26 января 2012

Я хочу извлечь все элементы списка из первого нечислового элемента:

input = [u'12', u'23', u'hello', u'15', u'guys']

Я хочу:

output = [u'hello', u'15', u'guys']

Непифоническая версия будет:

input_list = [u'12', u'23', u'hello', u'15', u'guys']

non_numeric_found=False
res = []
for e in input_list:
    if not non_numeric_found and e.isnumeric():
        continue
    non_numeric_found=True
    res.append(e)

Есть предложения по лучшей реализации этого?

Ответы [ 3 ]

6 голосов
/ 26 января 2012

Вы можете использовать itertools.dropwhile:

import itertools
input_list = [u'12', u'23', u'hello', u'15', u'guys']
res = list(itertools.dropwhile(lambda s: s.isdigit(), input_list))
1 голос
/ 26 января 2012
def f(ls):
 if (len(ls) == 0 or not ls[0].isnumeric()):
   return ls
 return f(ls[1:])

input = [u'12', u'23', u'hello', u'15', u'guys']
f(input)
>>> [u'hello', u'15', u'guys']
1 голос
/ 26 января 2012

Немного длиннее, но более явная версия без itertools:

it = iter(input_list)
res = [] # in case the list has no non-numeric elements

for e in it:
    if not e.isnumeric():
        res = [e] + list(it)
        break
...