将列表的开头移至Python中的索引

时间:2012-04-17 22:58:24

标签: python list

假设我有一个清单:

[a,b,c,d,e,f]

给定一个索引,比如3,什么是以前删除所有内容的pythonic方法 从列表前面开始的索引,然后将其添加到后面。

因此,如果给我索引3,我想将列表重新排序为 [d,e,f,a,b,c]

4 个答案:

答案 0 :(得分:4)

>>> l = ['a', 'b', 'c', 'd', 'e', 'f']
>>> 
>>> l[3:] + l[:3]
['d', 'e', 'f', 'a', 'b', 'c']
>>> 

或将其带入一个功能:

>>> def swap_at_index(l, i):
...     return l[i:] + l[:i]
... 

>>> the_list = ['a', 'b', 'c', 'd', 'e', 'f']
>>> swap_at_index(the_list, 3)
['d', 'e', 'f', 'a', 'b', 'c']

答案 1 :(得分:3)

使用切片操作 例如,

  myList = ['a', 'b','c', 'd', 'e', 'f']
  myList[3:] + myList[:3]

给出

  ['d', 'e', 'f', 'a', 'b', 'c']

答案 2 :(得分:2)

def foo(myList, x):
    return myList[x:] + myList[:x]

应该做的伎俩。

这样称呼:

>>> aList = ['a', 'b' ,'c', 'd', 'e', 'f']
>>> print foo(aList, 3)
['d', 'e', 'f', 'a', 'b', 'c']

编辑哈哈所有答案都是一样的......

答案 3 :(得分:1)

这是sdolan所说的pythonic方式,我只能添加内联方式:

>>> f = lambda l, q: l[q:] + l[:q]

所以,您可以使用:

>>> f([1,2,3,4,5,6], 3)
[4, 5, 6, 1, 2, 3]