Как создать n * n сетку координат? - PullRequest
0 голосов
/ 12 января 2019

У меня проблемы с созданием сетки координат 8 * 8 в Python 2.7

Ради демонстрации я попытался сделать сетку 3х3 следующим образом:

grid=[]

for col in xrange(3):
    grid.append([col])
    for row in xrange(3):
        grid[col].append([row])

print grid

Я хочу иметь:

grid = [[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2]]

Но то, что я получил, было:

grid = [[0, [0], [1], [2]], [1, [0], [1], [2]], [2, [0], [1], [2]]]

Какие-нибудь советы?

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Я знаю, что это поздний ответ, но другое элегантное решение - использовать itertools.product:

import itertools

grid = list(itertools.product(xrange(3), xrange(3)))

Для пользователей Python 3 вы можете заменить xrange на range.

Вы получаете:

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

Здесь координаты - это кортежи. ИМО, не изменяемый объект имеет больше смысла.

0 голосов
/ 12 января 2019

Если вам нужно понимание списка, это сделает это за вас.

grid = [[row, col] for row in range(3) for col in range(3)]

Или, если вы хотите использовать для циклов,

grid = []
for row in range(3):
    for col in range(3):
        grid.append([row, col])

Любой из них дает это значение для grid:

[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...