我知道以前有人问过这个问题,但我从来没有看到过这样的回答,没有一个不把名单分开的。
假设我有一个清单:
num = [1,2,3,4,5,6]
我想创建一个函数:
rotate(lst, x):
所以如果我调用rotate(num, 3)
,它将全局编辑列表num
。这样当我稍后调用print(num)
时,它将导致[4,5,6,1,2,3]
。
我知道我可以写这样的函数:
rotate(lst, x):
return [lst[-x:] + lst[:-x]
但我需要在不使用return语句和不拆分列表的情况下执行此函数。我的想法是将列表的最后一个值放入一个变量中:q = lst[-1]
,然后从那里创建一个循环,循环运行x
持续将值移动到列表的末尾并用存储在q中的内容替换第0个位置的次数
还有一件事。如果我调用rotate(lst, -3)
,那么它必须旋转到“左”而不是旋转到“右”。
我对python还不太熟悉,在处理列表的概念上也很难集中精力。谢谢大家的时间和努力。我希望这个问题足够清楚。
这里有一个使用双端队列的解决方案。 根据需要,它就地修改列表,既不使用
return
,也不使用列表的块。产生
请看一下PMOTW在
deque
上的tutorial尝试:
您可以使用切片指定来修改当前策略以执行所需的操作。您已经正确地生成了旋转列表,只需使用
lst[:] = ...
修改列表交互式解释器中的示例:
现在向后旋转:
在另一个问题上看到这个答案:https://stackoverflow.com/a/10623383/3022310
相关问题 更多 >
编程相关推荐