我想从第一个非数字元素中提取列表的所有元素:
input = [u'12', u'23', u'hello', u'15', u'guys']
我想:
output = [u'hello', u'15', u'guys']
非pythonic版本将是:
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)
有什么建议可以更好地实现这个目标吗?
答案 0 :(得分:6)
您可以使用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 :(得分:1)
稍微长一点但没有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
答案 2 :(得分:1)
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']