Deque旋转返回None类型

2 投票
2 回答
1165 浏览
提问于 2025-04-18 01:05

我想把一个numpy数组向右或向左旋转一定的距离。我现在的做法是这样的:

  1. 我把它转换成deque对象
  2. 使用deque对象的旋转方法。
  3. 再把类型转换回numpy数组。

比如,我把一个叫myarray的数组向右旋转2个元素。

deque(myarray)
myarray = myarray.rotate(2)
print myarray

但是我得到的结果不是数组,而是None。有人能帮我解决这个问题吗?

2 个回答

1

把这看作是对stardust的回答的一个补充说明/澄清/总结(因为声望原因不能评论),并附上完整的代码示例:

将stardust的回答和njzk2的评论(rotate函数不返回任何东西可以打印)结合起来,你就能看到整个情况。

>>> from collections import deque
>>> myarray = [1,2,3,4]
>>> myarray = deque(myarray)
>>> print myarray
deque([1,2,3,4])
>>> myarray.rotate(1)
>>> print myarray
deque([4,1,2,3])
2

正如roippi所指出的,rotate是直接在原地旋转这个双端队列(deque)。代码应该是这样的:

deque(myarray)
myarray.rotate(1)

或者像Bi Rico建议的那样旋转数组。

roll(myarray, 1)

其实还有很多其他方法可以完成这个任务,比如切片。

撰写回答