首页 / PYTHON / 数字的旋转-python
数字的旋转-python
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数字的旋转-python,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1098字,纯文字阅读大概需要2分钟。
内容图文
![数字的旋转-python](/upload/InfoBanner/zyjiaocheng/669/2337115ed85747179738c0a09885ee3f.jpg)
为了找到数字的旋转,我编写了如下代码
def rotation(N):
A=[]
for i in range(len(N)):
y=N.pop(0)
N.append(y)
A.append(N)
return A
K=[1,9,7]
r=rotation(K)
print(r)
但是它给我的输出像:
A=[[1, 9, 7], [1, 9, 7], [1, 9, 7]]
但应该是
A=[[1,9,7],[9,7,1],[7,1,9]]
我不明白为什么会这样
谢谢
解决方法:
使用collections.deque
您应该将collections.deque用于此任务,并使用专门为此目的设计的就地方法deque.rotate.
使用列表执行此任务将需要昂贵的复制操作,而双端队列已针对从队列开头和结尾快速添加和删除元素进行了优化.有关更多详细信息,请参见TimeComplexity.
from collections import deque
A = deque([1, 9, 7])
for i in range(len(A)):
print(A)
A.rotate()
deque([1, 9, 7])
deque([7, 1, 9])
deque([9, 7, 1])
为什么您的代码不起作用
您的代码不起作用的原因是因为您正在修改同一对象而不是副本.以下将起作用:
def rotation(N):
A = []
for i in range(len(N)):
N = N[:]
N.append(N.pop(0))
A.append(N)
return A
K = [1,9,7]
r = rotation(K)
print(r)
[[9, 7, 1], [7, 1, 9], [1, 9, 7]]
进一步说明
如果修改同一对象,则A将由3个列表组成,每个列表指向同一对象,因此将保证它们是相同的.请记住,每个列表只是一堆指针.如果每个指针指向一个对象,则将其更改3次意味着最终的分配将用于所有子列表.
内容总结
以上是互联网集市为您收集整理的数字的旋转-python全部内容,希望文章能够帮你解决数字的旋转-python所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。