0

我正在尝试编写一个通过矩阵的函数。当满足条件时,它会记住该位置。

我从一个空列表开始:

locations = []

当函数遍历行时,我使用以下方法附加坐标:

locations.append(x)
locations.append(y)

在函数的末尾,列表如下所示:

locations = [xyxyxyxyxyxy]

我的问题是:

使用追加,是否可以使列表遵循以下格式

locations = [[[xy][xy][xy]][[xy][xy][xy]]]

其中第一个括号表示矩阵中一行的位置,并且每个位置都在该行中它自己的括号中?

在这个例子中,第一个括号是第一行,总共有 3 个坐标,然后第二个括号用另外 3 个坐标表示第二行。

4

4 回答 4

7

代替

locations.append(x)

你可以做

locations.append([x])

这将附加一个包含 x 的列表。

所以要做你想做的事情,建立你想要添加的列表,然后附加该列表(而不是仅仅附加值)。就像是:

 ##Some loop to go through rows
    row = []
    ##Some loop structure
        row.append([x,y])
    locations.append(row)
于 2013-10-29T16:43:20.757 回答
2

尝试类似:

def f(n_rows, n_cols):
    locations = [] # Empty list
    for row in range(n_rows):
        locations.append([]) # 'Create' new row
        for col in range(n_cols):
            locations[row].append([x, y])
    return locations

测试

n_rows = 3
n_cols = 3
locations = f(n_rows, n_cols)
for e in locations:
    print
    print e

>>> 

[[0, 0], [0, 1], [0, 2]]

[[1, 0], [1, 1], [1, 2]]

[[2, 0], [2, 1], [2, 2]]
于 2013-10-29T16:44:45.573 回答
2

简单的例子

locations = []

for x in range(3):
    row = []
    for y in range(3):
        row.append([x,y])
    locations.append(row)

print locations

结果:

[[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1], [1, 2]], [[2, 0], [2, 1], [2, 2]]]
于 2013-10-29T16:45:22.440 回答
1

尝试这个:

locations = [[]]
row = locations[0]
row.append([x, y])
于 2013-10-29T16:42:16.530 回答