2017-05-28 48 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'] 
>>>