考慮以下列表:交換兩個子列表列表中
my_list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
我希望能夠與子列表my_list[7:10]
儘快和儘可能高效地交換子列表my_list[2:4]
,得到新名單:
new_list=[0, 1, 7, 8, 9, 4, 5, 6, 2, 3, 10, 11, 12]
這裏是我的嘗試:
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])
這並打印德儘管這樣做對我來說看起來很糟糕。
是否有一個更簡單和優雅的方式來做,它不會爲每個函數調用創建四個新列表? (我打算稱此功能很多)
我不介意(實際上我更喜歡)更改原始列表,而不是每個函數調用都創建新實例。
my_list [2:4] = my_list [7:10]'? – Moritz
這將覆蓋'my_list [2:4]'。 –
我不明白,因爲它創建:'[0,1,7,8,9,4,5,6,7,8,9,10,11,12]' – Moritz