ссылка на ячейку матрицы, которая не была создана с помощью понимания списка

#python #matrix

#python #матрица

Вопрос:

У меня есть динамическая матрица, и я хочу изменить значения в одной из ячеек. Загвоздка в том, что я как бы жестко запрограммировал матрицу, поскольку она состоит из отдельных списков (не вложенного списка), которые печатаются один за другим.

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

 rows = int(input("number of rows "))
columns = int(input("number of columns "))


row_1 = ["0"] * (columns)
row_2 = ["0"] * (columns)
row_3 = ["0"] * (columns)
row_4 = ["0"] * (columns)


if rows >= 1:
    print(row_1)

if rows >= 2:
    print(row_2)

if rows >= 3:
    print(row_3)

if rows >= 4:
    print(row_4)

# Change value in certain row and column
value = input("enter value")
rows = int(input("Row number "))
columns = int(input("Column number "))

# At this part the cell in the user-selected row and column is changed to inputted value
# but I'm not sure how to do it
 

Ответ №1:

Чтобы использовать индексацию пользователя, ваши списки должны быть соединены в последовательности. Да, вы могли бы пройти через некоторые неприятные препятствия, чтобы сгенерировать имя переменной из пользовательского ввода, но это очень плохая практика программирования.

 master_list = [row_1, row_2, row_3, row_4]
master_list[rows][columns] = value
 

Да, это вложенная структура. Вы разработали вложенную концепцию, вы принимаете входные данные, которые подразумевают вложенную структуру. Если у вас есть серьезные возражения против решения этой проблемы с помощью вложенности, пожалуйста, уточните этот момент.