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

Python 为什么我的循环只旋转一次?,python,rotation,Python,Rotation,我应该写一个函数,它得到一个列表并旋转它几次(旋转的次数是给定的) 出于某种原因,在第二个函数中,它只旋转一次,但我需要它旋转k次(我需要它运行函数旋转1k次),我应该修复什么 谢谢您需要重新分配值 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(ls

我应该写一个函数,它得到一个列表并旋转它几次(旋转的次数是给定的)

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


谢谢

您需要重新分配值

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)

正确的代码应为-

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

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

您没有修改任何值,只是在打印,所以每次迭代时,您都会得到相同的值。您必须使用
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]

您必须像这样正确地对齐第一个函数中的print语句

def旋转1(lst):
打印(lst[-1:]+lst[:-1])

那么万一回来呢

def旋转1(lst):
返回(lst[-1:]+lst[:-1])

您将哪些参数传递给函数调用?这对我来说很好。我尝试了输入[1,2,3,4,5],我应该得到[4,5,1,2,3],但是我得到了[5,1,2,3,4]@user3369309更正的缩进。我看不出有什么不同。如果是格式问题,他甚至无法测试。你不应该这样做。如果人们看到你的答案是正确的,他们会投赞成票。先生,他们不会投反对票。。。请注意,他们没有投票是不对的。谢谢
>>> 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]