python-3.x - 有没有更简单的方法在 python 中将数组向左移动?
问题描述
我在 python 中做了一个简单的问题,即使用 python 3.0 将数组向左移动来解决我遇到的问题,我只需要数组的长度为 3。例如,如果我的数组[1, 2, 3]
在班次之后,它应该读取[2,3,1]
. 我的代码有效,但我想知道是否有人可以指导我提高它的效率,并尽可能对任何数组长度进行操作。我的问题是我不认为我知道如何一次移动所有元素,而是在第一个元素之后移动所有元素,然后在循环之后将第一个元素附加到数组中。
def rotate_left3(nums):
shifted_nums=[]
i=len(nums)
for j in range(i):
shifted_nums=nums[j-1:]
var=nums[0]
shifted_nums.append(var)
return shifted_nums
解决方案
最快的方法是使用collections.deque
. 它支持两端的快速追加和弹出,并有一个调用方法rotate
来实现你想要的:
>>> from collections import deque
>>> de = deque([1, 2, 3, 4])
>>> de
deque([1, 2, 3, 4])
>>> de.rotate(2)
>>> de
deque([3, 4, 1, 2])
>>> de.rotate(-2)
>>> de
deque([1, 2, 3, 4])
推荐阅读
- sql - 插入表需要来自另一个表的特定条件
- ruby-on-rails - 在 Ruby on Rails 项目中将“关注点”存储在哪里?(轨道 5.2+)
- mitmproxy - 如何用 mitmproxy/mitmdump 替换 JS 文件
- android-studio - 在 AndroidManifest.xml 中使用字符串资源时出现问题
- python - 解析和 strptime 不会在熊猫中转换我的日期
- scala - Scala:从文件中查找字符出现
- mysql - where 语句中不存在别名表
- sed - 使用 Sed 使用带有模式的文件删除多行
- javascript - 使用异步等待 es6 函数在变量上未定义
- html - 你可以使用 HTML 作为背景,因为你可以使用 SVG 作为背景吗?