在 Python 中创建二维网格

Wil*_*iam 2 python list multidimensional-array

我正在尝试用 Python 创建一个二维数组或列表或其他东西。我对这门语言非常陌生,所以我不知道所有的来龙去脉以及不同的类型或库。

基本上,我有一个列表的方形列表 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
Run Code Online (Sandbox Code Playgroud)

感谢您提供的任何帮助!

编辑:抱歉造成混乱,显然我的意思是转置,而不是反转!

Sve*_*ach 5

此实现与您的“方形”列表列表的实现相同:

def makeLRGrid(g):
    return [row[:] for row in g]
Run Code Online (Sandbox Code Playgroud)

可以通过使用 切片整个列表来复制列表[:],并且您可以使用列表理解对每一行执行此操作。

编辑:您似乎实际上旨在调换列表列表。这可以通过以下方式完成zip()

def transpose(g):
    return zip(*g)
Run Code Online (Sandbox Code Playgroud)

或者,如果您确实需要一个列表列表

def transpose(g):
    return map(list, zip(*g))
Run Code Online (Sandbox Code Playgroud)

另请参阅的文档zip()