Given a list:
mylist = [\'dog\', \'cat\', \'mouse_bear\', \'lion_tiger_rabbit\', \'ant\']
I\'d like a one-liner to return a new list:
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']