I would like to replace elements in one list with elements in another, but only as far as the second list goes.
For example:
defaults = ['apple','banana','cherry','date']
data = ['accordion','banjo']
# result: ['accordion','banjo','cherry','date']
I can do it with a for loop, and I can do it in one line with the following code:
result = [data[i] if i<len(data) else defaults[i] for i,v in enumerate(defaults)]
Is there a simpler or more direct approach to doing this?
>Solution :
You want:
result = data + defaults[len(data):]
If data can be longer than defaults and you want the length of defaults to be the maximum length:
result = data[:len(defaults)] + defaults[len(data):]
This use of : is called ‘slicing’, more on slicing lists here python.org on Lists