从第一个非数字元素中提取所有元素

use*_*446 2 python list-comprehension

我想从第一个非数字元素中提取列表的所有元素:

input = [u'12', u'23', u'hello', u'15', u'guys']
Run Code Online (Sandbox Code Playgroud)

我想要:

output = [u'hello', u'15', u'guys']
Run Code Online (Sandbox Code Playgroud)

非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)
Run Code Online (Sandbox Code Playgroud)

有什么建议可以更好地实现这个?

phi*_*hag 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))
Run Code Online (Sandbox Code Playgroud)

  • isdigit和isnumeric的行为略有不同,例如unichr(188).isdigit()== False但.isnumeric()= True.[188是1/4符号.]无论如何OP可能是想要的,但值得一提. (2认同)