Создайте 2d массив / список в Python 3 на основе только одного числа, чтобы создать пустую матрицу - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь создать двумерный массив / список, который может динамически изменяться на основе одного числа, так что, скажем, я ввел число 3, это создаст двумерный массив, подобный этому, с тремя строками и тремя столбцами. ввод 10 приведет к созданию массива с 10 столбцами и 10 строками и т. д.

array = [
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
]

Я немного исследовал переполнение как в Google, так и в стеке, и ни один из них не дал результатов, которые действительно мне очень помогают.
На данный момент у меня есть функция, которая принимает один параметр (numberOfCells) и использует для циклов, чтобы попытаться заполнить массив, возвращает TypeError: 'int' object is not iterable, поэтому я открыт для предложений по реализации этого другими способами

оба фрагмента кода ниже будут создавать новую ячейку, используя этот класс

class Cell:

    def __init__(self, id):
        self.infected = False
        self.dead = False
        self.id = id

    def printId(self):
        print(self.id)




def createTestingEnv(numberOfCells):
    # creates a simulated cell tissue
    row = list(range(numberOfCells + 1))  # +1 because range uses < not <=
    column = numberOfCells
    env = [[]]
    for i in range(numberOfCells):
        for j in range(numberOfCells):
            env.append(list(i))


    # env = list([row] * column)  # create a 2D array/list based on number of cells
    print(env)


createTestingEnv(3)

(выше), этот код возвращает ошибку, поэтому я не знаю, правильный ли это подход.
(ниже) этот код работает, но он не дает желаемого результата


def createTestingEnv(numberOfCells):
    # creates a simulated cell tissue
    row = list(range(numberOfCells + 1))  # +1 because range uses < not <=
    column = numberOfCells
    env = list([row] * column)  # create a 2D array/list based on number of cells
    for i in range(numberOfCells):
        for j in range(numberOfCells):
            k = Cell(i + j)
            k.printId()


createTestingEnv(10)

Я новичок в python, есть ли что-то, что я должен делать по-другому? или я к этому совершенно неверно отношусь? Если да, то как мне это сделать?

Спасибо, Ашер

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Если массивы должны быть заполнены нулями, это должно работать:

def createTestingEnv(numberOfCells):
   holder = []
   env = []
   for i in range(numberOfCells):
      holder.append(0)
   for i in range(numberOfCells):
      env.append(holder)

   print(env)
1 голос
/ 30 мая 2019

Попробуйте это

def make_array(n):
   return [ [0]*n for i in range(n)]
...