如何在不使用zip功能的情况下旋转多维List,我有这个列表(但它可以更长):
testlist = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10,11,12]]
我想将其顺时针旋转90度,逆时针旋转90度。 ps:我不想使用zip的原因是因为这是一个家庭作业,我必须用香草蟒蛇写它。
答案 0 :(得分:2)
当然,旋转多维列表的正确方法是在反向列表上使用 q
。我假设你已经在其他问题中找到了这个:
zip
如果您不想这样做(并且也不想要其他内置函数),您基本上必须复制 zip的行为。以一种非常简单的形式(例如,假设所有列表具有相同的长度),您可以在嵌套列表理解中执行此操作。请记住也要旋转列表:
>>> testlist = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10,11,12]]
>>> list(zip(*testlist[::-1]))
[[10, 7, 4, 1], [11, 8, 5, 2], [12, 9, 6, 3]]
显然,使用>>> [[x[i] for x in testlist[::-1]] for i in range(len(testlist[0]))]
[[10, 7, 4, 1], [11, 8, 5, 2], [12, 9, 6, 3]]
更清晰,更不容易出错。当然,你也可以使用两个嵌套循环将它扩展到几行。逆时针旋转90度也可以作为读者的练习。
答案 1 :(得分:0)
你的代码就像:
>>> import numpy as np
>>> s = np.array([[1,2,3], [4,5,6], [7,8,9]], int)
>>> s
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> np.rot90(s)
array([[3, 6, 9],
[2, 5, 8],
[1, 4, 7]])
>>> np.rot90(s, 3) # Rotate counterclockwise 3 times
array([[9, 8, 7],
[6, 5, 4],
[3, 2, 1]])
答案 2 :(得分:0)
我假设你的意思是转置。
这个怎么样?
import numpy as np
a=np.array(testlist)
print a.T #this is a view
答案 3 :(得分:0)
既然你已经说过要做作业,我会给你步骤,但不是代码。
旋转90
旋转-90