Replace Element With A List In Python
In python, what is the best way to replace an element in a list with the elements from another list? For example, I have: a = [ 1, 'replace_this', 4 ] I want to replace replace_th
Solution 1:
You can just use slicing:
>>>a = [ 1, 'replace_this', 4 ]>>>a[1:2] = [2, 3]>>>a
[1, 2, 3, 4]
And as @mgilson points out - if you don't happen to know the position of the element to replace, then you can use a.index
to find it... (see his comment)
update related to not using slicing
Using itertools.chain
, making sure that replacements
has iterables:
from itertools import chain
replacements = {
'replace_this': [2, 3],
4: [7, 8, 9]
}
a = [ 1, 'replace_this', 4 ]
printlist(chain.from_iterable(replacements.get(el, [el]) for el in a))
# [1, 2, 3, 7, 8, 9]
Solution 2:
I would go with a generator to replace the elements, and another generator to flatten it. Assuming you have a working flatten
generator, such that in the link provided:
defreplace(iterable, replacements):
for element in iterable:
try:
yield replacements[element]
except KeyError:
yield element
replac_dict = {
'replace_this': [2, 3],
1: [-10, -9, -8]
}
flatten(replace(a, replac_dict))
# Or if you want a list#list(flatten(replace(a, replac_dict)))
Post a Comment for "Replace Element With A List In Python"