我应该编写一个获取列表并旋转几次的函数(给出旋转次数)
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次),我应该修复什么?
由于
答案 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])