假设我有一个清单:
[a、b、c、d、e、f]
给定一个索引,比如 3,从列表的前面删除该索引之前的所有内容,然后将其添加到后面的 Python 方法是什么?
因此,如果给定索引 3,我希望将列表重新排序为 [d, e, f, a, b, c]
>>> 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']
使用切片操作,例如,
myList = ['a', 'b','c', 'd', 'e', 'f']
myList[3:] + myList[:3]
给
['d', 'e', 'f', 'a', 'b', 'c']
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']
编辑哈哈所有答案都是一样的......
这是sdolan所说的pythonic方式,我只能添加内联方式:
>>> f = lambda l, q: l[q:] + l[:q]
所以,你可以像这样使用:
>>> f([1,2,3,4,5,6], 3)
[4, 5, 6, 1, 2, 3]