Я пытался вставить данные в список списка, я выполнил все инструкции по вставке параметров в функцию списка. Однако я не могу заставить код работать так, как хотелось бы.
Минимальный воспроизводимый пример
table = []
row = []
table.append(row)
print (len(table))
table[0].insert(0,"a")
table.append(row)
table[1].insert(0,"b")
print(table)
Полный код ниже
table = []
row = []
def main():
print("")
print("[E]ntry")
print("[P]rint table")
print("[C]ount lists")
print("[S]elect lists")
menuoption = input("Select option: ")
if menuoption == "E":
tableentry()
elif menuoption == "P":
print (table)
main()
elif menuoption == "C":
print (len(table))
main()
elif menuoption == "S":
selectlist = input("select list: ")
print (table[1])
main()
else:
print("invalid option")
main()
def tableentry():
table.append(row)
print (len(table))
table[0].insert(0,"a")
table.append(row)
table[1].insert(0,"b")
print(table)
main()
main()
Выход это
[['b', 'a'], ['b', 'a']]
Я хотел бы, чтобы вывод выглядел так
[['a'], ['b']]
Какая логика позади? Почему вам нужно выбрать a
для первого списка и b
для второго? Мы не можем помочь без дополнительной информации
Обратите внимание, что к row
дважды добавляется только объект одинtable
. Следовательно, и table[0].insert
, и table[1].insert
будут вставлены в список такой же, а печать table
покажет один и тот же подсписок дважды.
Отвечает ли это на ваш вопрос? Как клонировать список, чтобы он не изменился неожиданно после назначения?
Итак, я должен предоставить какой-то счетчик объекту «строка», я пробовал «if row == 0: row = row elif row = row +1. но я не получил хороших результатов.
Я напишу короткий код для этого минимального воспроизводимого примера, дайте мне несколько минут.
Поскольку строка определяется в начале вашей программы, когда вы добавляете ее в свою таблицу, вы, вероятно, добавляете ссылку на саму строку объекта (а не каждый раз на новый пустой массив).
Замена table.append(row)
на table.append([])
должна решить вашу проблему!
Это решило мою проблему, большое спасибо,
Пожалуйста, редактировать ваш вопрос, чтобы предоставить минимальный воспроизводимый пример. В частности, мы не знаем, что
input
вы предоставляете этой функции. В идеале в коде не будет ручного ввода, а вместо этого будет использоваться жестко запрограммированная последовательность команд.