Skip to content Skip to sidebar Skip to footer

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"