Как создать 2d массив в Python, если мы знаем количество строк, а количество столбцов зависит от какого-либо условия? - PullRequest
2 голосов
/ 13 января 2010

Максимальный размер моего массива может быть 2x27, но количество столбцов может быть меньше 27. Количество столбцов зависит от некоторых условий. Хорошее решение инициализировать массив 2x27, а затем удалить ненужные столбцы или есть более элегантный способ сделать это?

Ответы [ 4 ]

3 голосов
/ 13 января 2010

Нет, нет особого смысла создавать больший массив, а затем удалять его часть - просто создайте то, что вам нужно. Предполагая, что под «2d массивом» вы на самом деле подразумеваете «список списков»:

def makarray(value, nrows, ncols):
  return [[value]*ncols for _ in range(nrows)]
1 голос
/ 13 января 2010

Вот простой способ справиться с этим:

num_rows, num_cols = 2, 27
table = []

for r in range(num_rows):
    row = []
    table.append(row)
    for c in range(num_cols):
        row.append(c)

print table
1 голос
/ 13 января 2010

Для стольких элементов используйте словарь с кортежами в качестве ключей:

dct = {}
dct[(0,0)] = 'X'
if (10,10) in dct:
    dct[(10,10)] += 1
else:
    dct[(10,10] = 0
# Deleting a row / column
dct.pop((10,0))
dct.pop((10,1))
...
dct.pop((10,10))

Словари очень гибкие.

В качестве альтернативы используйте массив numpy.

0 голосов
/ 13 января 2010

Проверьте эту ссылку о Numpy Array. На этой странице есть несколько простых примеров использования.

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