Python - многострочный массив - PullRequest
5 голосов
/ 13 апреля 2010

в с ++ могу написать:

int someArray[8][8];
for (int i=0; i < 7; i++)
   for (int j=0; j < 7; j++)
      someArray[i][j] = 0;

А как я могу инициализировать многострочные массивы в python? Я попробовал:

array = [[],[]]
for i in xrange(8):
   for j in xrange(8):
        array[i][j] = 0

Ответы [ 5 ]

7 голосов
/ 13 апреля 2010

Вы спрашивали об инициализации списка списков. Это очень полезная структура данных, но она имеет важное отличие от двумерного массива в C ++: нет никаких гарантий, что все строки имеют одинаковую длину (т. Е. len(a[0])==len(a[1]) (в то время как в C ++ у вас есть такая гарантия).

Таким образом, другое решение, которое может быть удобно, использует NumPy массив тип данных, например:

import numpy as np
array = np.zeros((8,8))
7 голосов
/ 13 апреля 2010
>>> [[0]*8 for x in xrange(8)]
[[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]]
>>>
3 голосов
/ 13 апреля 2010
array = [[0]*8 for i in xrange(8)]
3 голосов
/ 13 апреля 2010

Вот более короткий путь:

array = []
for i in xrange(8):
    array.append( [0] * 8 )
2 голосов
/ 13 апреля 2010
[[0]*8 for x in range(8)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...