Ответ 1
Используйте вложенные списки:
a = [[0 for y in range(8)] for x in range(8)]
который эквивалентен
a = []
for x in range(8):
row = []
for y in range(8):
row.append(0)
a.append(row)
Возможный дубликат:
Как инициализировать двумерный массив в Python?
Я всегда писал эту часть кода следующим образом: каждый раз, когда мне это нужно, я использую этот код python:
for x in range(8):
a.append([])
for y in range(8):
a[x].append(0)
Однако, я хотел бы знать, есть ли способ украсить этот кусок кода. Я имею в виду, как вы создаете двумерную матрицу в python и заполняете ее 0?
Используйте вложенные списки:
a = [[0 for y in range(8)] for x in range(8)]
который эквивалентен
a = []
for x in range(8):
row = []
for y in range(8):
row.append(0)
a.append(row)
Попробуйте следующее:
a = [[0]*8 for _ in xrange(8)]
Он использует списки и то, что оператор *
может быть применен к спискам для их заполнения n
копиями данного элемента.
Или, что еще лучше, напишите общую функцию для возвращаемых матриц заданного размера:
# m: number of rows, n: number of columns
def create_matrix(m, n):
return [[0]*n for _ in xrange(m)]
a = create_matrix(8, 8)
Понимание списка более кратким.
a = [[0 for i in xrange(8)] for i in xrange(8)]
print a
Или вы можете использовать массивы numpy, если вы будете выполнять численные вычисления с массивом. Функция Numpy.zeros создает многомерный массив нулей.
import numpy as np
a = np.zeros((8,8))
Вы можете использовать список понятий. Поскольку вам не нужны значения, предоставляемые range
, вы можете использовать _
, который обычно обозначает значение, которое не интересует.
>>> z = [[0 for _ in range(8)] for _ in range(8)]
>>> import pprint
>>> pprint.pprint(z)
[[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]]
Перечисления списков предоставляют сжатый способ создания списков, не прибегая к использованию карт(), filter() и/или лямбда. Полученное определение списка часто бывает более четким, чем списки, построенные с использованием этих конструкций.