2017-05-28 49 views
3

下面的代碼有什麼問題?我正在嘗試交換字符串列表的兩個子集。使用Python交換同一列表中的子集

>>> a = ['b', 'b', 'b', 'a', 'x', 'x', 'x', 'x', 'x', 'y'] 
['b', 'b', 'b', 'a', 'x', 'x', 'x', 'x', 'x', 'y'] 
>>> a[4:9] 
['x', 'x', 'x', 'x', 'x'] 
>>> a[9:10] 
['y'] 
>>> a[4:9], a[9:10] = a[9:10], a[4:9] 
>>> a 
['b', 'b', 'b', 'a', 'y', 'y', 'x', 'x', 'x', 'x', 'x'] 

回答

1

a[4:9], a[9:10] = a[9:10], a[4:9]

  1. a[4:9] = a[9:10]採取5日,6日,7日,8日名單的指數,並與第九指數替換它們考慮執行的兩個命令。這意味着4'x'變成1'y',並且這會給您留下['b', 'b', 'b', 'a', 'y', 'y'](現在第一個y是您交換的結果,而第二個,僅僅是您的原始列表的末尾)
  2. a[9:10] = a[4:9]將最後一個索引你的清單,並互換其5「X」(即由4:原單9個索引),導致由@ClsForCookies給出['b', 'b', 'b', 'a', 'y', 'y', 'x', 'x', 'x', 'x', 'x']
-1

交代,這裏是它的解決方案,您可以按照以下concate列表:

>>> a 
['b', 'b', 'b', 'a', 'x', 'x', 'x', 'x', 'x', 'y'] 
>>> a = a[:4] + a[9:10] + a[4:9] 
>>> a 
['b', 'b', 'b', 'a', 'y', 'x', 'x', 'x', 'x', 'x'] 
>>>