3

假设我有一个清单:

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

给定一个索引,比如 3,从列表的前面删除该索引之前的所有内容,然后将其添加到后面的 Python 方法是什么?

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

4

4 回答 4

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']
于 2012-04-17T23:00:08.177 回答
3

使用切片操作,例如,

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

  ['d', 'e', 'f', 'a', 'b', 'c']
于 2012-04-17T23:01:02.943 回答
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']

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

于 2012-04-17T23:01:06.960 回答
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]
于 2012-04-17T23:23:27.543 回答