为什么我的循环只旋转一次?

时间:2014-03-22 15:00:52

标签: python rotation

我应该编写一个获取列表并旋转几次的函数(给出旋转次数)

def rotate1(lst):

print(lst[-1:]+lst[:-1])

def rotatek_v1(lst,k):
    for i in range(0,k):
       rotate1(lst)
    print(lst)

由于某种原因,在第二个函数中它只旋转一次但我需要它旋转k次(我需要它来运行函数rotate1 k次),我应该修复什么?

由于

4 个答案:

答案 0 :(得分:2)

您需要重新分配值

def rotate1(lst):
  return lst[-1:]+lst[:-1] # here

def rotatek_v1(lst,k):
    for i in range(0,k):
       lst = rotate1(lst) # and here
    print(lst)

答案 1 :(得分:1)

您不是在修改任何值,只是打印,所以每次迭代时,您都会获得相同的值。您必须使用return语句,以便可以使用结果并将其分配给变量,例如:

def some_function():
    return 100

some_var = some_function()

将它应用于您的案例:

def rotate1(lst):
    return (lst[-1:] + lst[:-1])

def rotatek_v1(lst, k):
    for i in range(0, k):
        lst = rotate1(lst)
        print lst

<强>演示:

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

答案 2 :(得分:0)

正确的代码应该是这个 -

def rotate1(lst):
    print(lst[-1:]+lst[:-1]);

def rotatek_v1(lst,k):
    for i in range(0,k): rotate1(lst);
    print(lst);

答案 3 :(得分:0)

您必须以正确的方式在第一个函数中对齐print语句,如此

def rotate1(lst): print(lst[-1:]+lst[:-1])

如果返回则

def rotate1(lst): return (lst[-1:]+lst[:-1])