私がリストを持っていたとしましょう:
[a、b、c、d、e、f]
インデックス、たとえば3が与えられた場合、リストの前からそのインデックスの前にあるすべてのものを削除し、それを後ろに追加するためのpythonicな方法は何ですか。
したがって、インデックス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が言ったように、Pythonのように、インラインでしか追加できません。
>>> f = lambda l, q: l[q:] + l[:q]
したがって、次のように使用できます。
>>> f([1,2,3,4,5,6], 3)
[4, 5, 6, 1, 2, 3]