Как написать функцию которая генерируют Многомерный массив изходя из входных данных. например входит число N, то результатом будет массив N на N
Ответ
Если нужны именно массивы array.array или bytearray, то никак. В Python нет многомерных массивов.
Разве что сделать одномерный массив размером n*n, и обращаться по индексу x+n*y. Например, как bytearray(n*n) или, скажем, array.array("l", [0 for _ in range(0, n*n)])
Если под понятие «многомерного массива» подойдет понятие «списка списков» (списки в CPython реализованы именно как массивы), то, собственно, сделать их. Например, так:
>>> n = 3
>>> [[0 for _ in range(0, n)] for _ in range(0, n)]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
Если нужны именно матрицы, то можно воспользоваться NumPy
>>> numpy.matrix(numpy.zeros((n, n)))
matrix([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
Или, если нужны не матрицы (а n×n было частным случаем), то, непосредственно, numpy.array
>>> numpy.zeros((n, n))
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
Или, как верно замечает @mikillskegg, например, если требуется массив не чисел, то вместо numpy.array/numpy.zeros можно воспользоваться более низкоуровневым интерфейсом numpy.ndarray
>>> a = numpy.ndarray(shape=(n, n), dtype=(unicode, 1))
>>> a.fill(u"X")
array([[u'X', u'X', u'X'],
[u'X', u'X', u'X'],
[u'X', u'X', u'X']],
dtype='
Комментариев нет:
Отправить комментарий