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

2024-10-02 08:18:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

def rotate1(lst):

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

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

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

谢谢


Tags: 函数in列表fordefrange次数v1
3条回答

正确的代码应该是-

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]

你需要重新赋值

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)

相关问题 更多 >

    热门问题