回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>给出以下列表:</p>
<pre><code>my_list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
</code></pre>
<p>我希望能够尽快高效地将子列表<code>my_list[2:4]</code>与子列表<code>my_list[7:10]</code>交换,以获得新列表:</p>
^{pr2}$
<p>我的尝试是:</p>
<pre><code>def swap(s1, s2, l):
seg1=l[:s1.start]+l[s2]
seg2=l[s1.stop : s2.start]
seg3=l[s1]+l[s2.stop:]
return seg1+seg2+seg3
print swap(slice(2,4), slice(7,10), [0,1,2,3,4,5,6,7,8,9,10,11,12])
</code></pre>
<p>这确实打印了所需的输出,尽管这种方式在我看来很糟糕。在</p>
<p>有没有一种更简单、更优雅的方法来完成它,它不会为每个函数调用创建四个新列表?(我计划经常调用这个函数)</p>
<p>我不介意(实际上我更喜欢)更改原始列表,而不是每次函数调用都创建新实例。在</p>