3

私がリストを持っていたとしましょう:

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

インデックス、たとえば3が与えられた場合、リストの前からそのインデックスの前にあるすべてのものを削除し、それを後ろに追加するためのpythonicな方法は何ですか。

したがって、インデックス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が言ったように、Pythonのように、インラインでしか追加できません。

>>> 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 に答える