Given a list:
mylist = ['dog', 'cat', 'mouse_bear', 'lion_tiger_rabbit', 'ant']
I'd like a one-liner to return a new list:
['dog', 'cat', 'mouse', 'bear', 'lion', 'tiger', 'rabbit', 'ant']
Given a list:
mylist = ['dog', 'cat', 'mouse_bear', 'lion_tiger_rabbit', 'ant']
I'd like a one-liner to return a new list:
['dog', 'cat', 'mouse', 'bear', 'lion', 'tiger', 'rabbit', 'ant']
One-liners are over-rated. Here's a solution using a "traditional" for loop.
mylist = ['dog', 'cat', 'mouse_bear', 'lion_tiger_rabbit', 'ant']
out = []
for s in mylist:
if '_' in s:
out.extend(s.split('_'))
else:
out.append(s)
print(out)
output
['dog', 'cat', 'mouse', 'bear', 'lion', 'tiger', 'rabbit', 'ant']
This also works:
out = []
for s in mylist:
out.extend(s.split('_'))
It's shorter, but I think the previous version is clearer.