Я пытаюсь случайным образом создать решетку 2D 20х20 с 1 и -1 в Python. Я генерирую 20 разных строк, и все, кажется, идет хорошо, пока я на самом деле не пытаюсь добавить сгенерированные строки в большой массив, A
. Функция печати возвращает 20 различных произвольно сгенерированных строк точно так, как я хочу, но когда я добавляю функцию добавления, она добавляет только первую сгенерированную строку в массив двадцать раз.Создание случайной 2D-решетки: Python добавляет одну и ту же строку несколько раз вместо новой строки каждый раз
Это похоже на простую вещь, но я как-то озадачен. Можете ли вы объяснить мне, почему это так, и как я могу это исправить? Вот мой код:
from random import randint
# generating the lattice
A = []
row = [0]*20
def genrow():
for i in range(0,20):
p = randint(1,100)
if p < 50:
row[i] = 1
else:
row[i] = -1
return row
def newrow():
for j in range(0,20):
genrow()
print(row)
A.append(row)
newrow()
print(A)
Является ли ваш отступ неправильным только в сообщении или в коде, в котором вы работаете? 'if p <50' и что угодно до возврата должно быть отступом 8 пробелов ... – Ilja
Вы говорите« первая сгенерированная строка », как если бы вы создали несколько строк, но я вижу только одну строку, в которой говорится« строка = ', а затем набор команд, которые изменяют эту единственную строку. Если вы уточните, в какой строке кода, который, по вашему мнению, создается новая строка, мы узнаем, какой вопрос следует закрыть, как дубликат. :-) – DSM