Как создать 2d список строк и столбцов? - PullRequest
0 голосов
/ 26 марта 2020

Я хотел бы иметь возможность создать квадратный список следующим образом:

#[[   ],[   ],[   ]
# [   ],[   ],[   ]
# [   ],[   ],[   ]]

Используя этот код:

GRID_SIZE = 3
def placeMines():
    L = []
    for x in range(GRID_SIZE):
        for y in range(GRID_SIZE):
            L.append([])
    print(L)

Тем не менее, я хочу иметь возможность сделать это так что список переходит к следующей строке, когда достигает номера строк (в данном случае 3) списков. Вроде как \n для струн.

Ответы [ 3 ]

0 голосов
/ 26 марта 2020

Поскольку ответ kederra c был слишком буквальным при сравнении вопроса со строкой, я опишу здесь создание структуры данных списка.

И ваш визуальный пример, и код описывают a (9, 1) список, который, я думаю, не то, что вы хотите. По вашему описанию я считаю, что вам нужен один из следующих объектов.

A (3,3,1) список, подобный этому, если скобки в вашем визуальном примере действительно представляют другие списки:

#[[[],[],[]],
# [[],[],[]],
# [[],[],[]]].

Или (3,3) список, подобный этому, если ваши скобки на самом деле не списки, но значения, которые будет принимать каждая позиция:

#[[0, 0, 0],
# [0, 0, 0],
# [0, 0, 0]].

В обоих случаях вы можете использовать понимание вложенного списка следующим образом :

Для первого случая:

L = [[[] for _ in range(GRID_SIZE)] for _ in range(GRID_SIZE)]

Для второго случая:

L = [[0 for _ in range(GRID_SIZE)] for _ in range(GRID_SIZE)]
0 голосов
/ 26 марта 2020

Вы можете сделать это, используя встроенную функцию divmod(), чтобы немного подсчитать, как показано ниже:

from pprint import pprint

GRID_SIZE = 3

def placeMines():
    L = []
    for i in range(GRID_SIZE**2):
        r, c = divmod(i, GRID_SIZE)
        if c == 0:  # New row?
            L.append([])
        L[-1].append(['   '])
    pprint(L)

placeMines()

Вывод:

[[['   '], ['   '], ['   ']],
 [['   '], ['   '], ['   ']],
 [['   '], ['   '], ['   ']]]
0 голосов
/ 26 марта 2020

вы можете использовать:

s = '[' + '\n '.join(','.join(['[   ]'] * GRID_SIZE)  for _ in range(GRID_SIZE)) + ']'
print(s)

вывод:

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