Replacing an item in list with items of another list without using dictionaries
<p>I am developing a function in python. Here is my content:</p>

<pre><code>list = ['cow','orange','mango']
to_replace = 'orange'
replace_with = ['banana','cream']
</code></pre>

<p>So I want that my list becomes like this after replacement</p>

<pre><code>list = ['cow','banana','cream','mango']
</code></pre>

<p>I am using this function:</p>

<pre><code>def replace_item(list, to_replace, replace_with):
    for n,i in enumerate(list):
      if i== to_replace:
         list[n]=replace_with
    return list
</code></pre>

<p>It outputs the list like this:</p>

<pre><code>['cow', ['banana', 'cream'], 'mango']
</code></pre>

<p>So how do I modify this function to get the below output?</p>

<pre><code>list = ['cow','banana','cream','mango']
</code></pre>

<p>NOTE: I found an answer here: <a href="http://stackoverflow.com/questions/14962931/replacing-list-item-with-contents-of-another-list">Replacing list item with contents of another list</a>
but I don't want to involve dictionaries in this. I also want to modify my current function only and keep it simple and straight forward.</p>

<p>First off, never use python built-in names and keywords as your variable names. (change the <code>list</code> to <code>ls</code>)</p>

<p>You don't need loop, find the index then chain the slices:</p>

<pre><code>In [107]: from itertools import chain    
In [108]: ls = ['cow','orange','mango']
In [109]: to_replace = 'orange'
In [110]: replace_with = ['banana','cream']
In [112]: idx = ls.index(to_replace)  
In [116]: list(chain(ls[:idx], replace_with, ls[idx+1:]))
Out[116]: ['cow', 'banana', 'cream', 'mango']
</code></pre>

<p>In pyhton 3.5+ you can use in-place unpacking:</p>

<pre><code>[*ls[:idx], *replace_with, *ls[idx+1:]]
</code></pre>

python list