[英]Creating a 2d Grid in Python
我正在尝试在Python中创建2d数组或列表或其他内容。 我是该语言的新手,所以我不了解所有的来龙去脉以及不同的类型或库。
基本上,我有一个正方形的列表g,并且想要对其进行转置(将行变成列,将列变成行)。 稍后,我将遍历此列表列表和已转置的列表列表。 在转置列表中,列的顺序无关紧要。 这是“ Python方式”吗? 有更快的方法吗?
我喜欢使用列表,因为我对与我所知道的语言中的数组非常相似的语法感到满意,但是如果Python中有更好的方法,我想学习一下。
def makeLRGrid(g):
n = []
for i in range(len(g)):
temp = []
for j in range(len(g)):
temp.append(g[j][i])
n.append(temp)
return n
感谢您提供的任何帮助!
编辑:很抱歉造成混乱,显然我的意思是转置,而不是反转!
要补充克里斯的评论,我真的不能推荐足够的numpy。 您说的是一个项目,但是为了一次学习一些(简单)语法,您可能会多次使用它。
例如,如果您有一个列表列表g:
g = [[1,2,3],[4,5,6],[7,8,9]]
您可以通过以下方法将其放入数组中:
>>> import numpy as np
>>> g_array = np.array(g)
>>> g_array
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
通过以下方式访问任何项目:
>>> g_array[0,1]
2
>>> g_array[1,2]
6
并通过以下方法执行“反转”(实际上是转置,即第一行成为第一行,直到每一行为止)
>>> g_transpose = g_array.transpose() # or = g_array.T from Simon's comment
>>> g_transpose
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
我想invert the list of lists
是这样的:
g = [[1,2,3], [4,5,6], [7,8,9]]
result = [p[::-1] for p in g]
print result
输出:
[[3,2,1], [6,5,4], [9,8,7]]
也许我很担心。 你能举个例子吗?
编辑:对于注释示例
result = [list(p) for p in zip(*g)]
print result
输出:
[[1,4,7], [2,5,8], [3,6,9]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.