2024-04-20 12:03:46 发布
网友
如何在不使用zip函数的情况下旋转多维列表,我有这个列表(但可以更长):
testlist = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10,11,12]]
我要顺时针旋转90度,也要逆时针旋转90度。 ps:我不想使用zip的原因是因为这是一个家庭作业,我必须用vanilla python编写它。在
你的代码应该是:
>>> 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]])
我想你是说换位。在
这个怎么样?在
import numpy as np a=np.array(testlist) print a.T #this is a view
当然,旋转多维列表的正确方法是在反向列表上使用使用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]]
如果您不想这样做(也不想使用其他内置函数),那么您基本上必须复制zip的行为。以一种非常简单的形式(例如,假设所有列表的长度相同),您可以在嵌套列表理解中实现这一点。还记得旋转列表:
显然,使用zip更清晰,更不容易出错。当然,也可以使用两个嵌套循环将其分散到几行。在90度逆时针方向做同样的动作留给读者作为练习。在
你的代码应该是:
我想你是说换位。在
这个怎么样?在
当然,旋转多维列表的正确方法是在反向列表上使用使用
zip
。我想你已经在其他问题中找到了这个问题:如果您不想这样做(也不想使用其他内置函数),那么您基本上必须复制zip的行为。以一种非常简单的形式(例如,假设所有列表的长度相同),您可以在嵌套列表理解中实现这一点。还记得旋转列表:
^{pr2}$显然,使用
zip
更清晰,更不容易出错。当然,也可以使用两个嵌套循环将其分散到几行。在90度逆时针方向做同样的动作留给读者作为练习。在相关问题 更多 >
编程相关推荐