How can I replace a text delimited string list item with multiple list items in a python list?

前端 未结 12 2171
遥遥无期
遥遥无期 2020-12-11 05:17

Given a list:

mylist = [\'dog\', \'cat\', \'mouse_bear\', \'lion_tiger_rabbit\', \'ant\']

I\'d like a one-liner to return a new list:

12条回答
  •  再見小時候
    2020-12-11 05:40

    This is not a one liner, but is nevertheless a valid option to consider if you want to return a generator:

    def yield_underscore_split(lst):
         for x in lst:
             yield from x.split('_')
    

    >>> list(yield_underscore_split(mylist))
    ['dog', 'cat', 'mouse', 'bear', 'lion', 'tiger', 'rabbit', 'ant']
    

    Original answer valid only for versions Python 3.3-3.7, kept here for interested readers. Do not use!

    >>> list([(yield from x.split('_')) for x in l]) 
    ['dog', 'cat', 'mouse', 'bear', 'lion', 'tiger', 'rabbit', 'ant']
    

提交回复
热议问题