Постоянное увеличение размера списка Python после каждого выполнения кода - PullRequest
0 голосов
/ 06 июля 2018

Мой код начинается с пустого списка:

l = []

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

l += [0, 0, 0, 0, 0]  
print(l) . # reuslt is l = [0, 0, 0, 0, 0]

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

first run >>> [0, 0, 0, 0, 0]
second run >>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
third run >>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
.
.
.

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

После выполнения вы потеряете все данные в вашем оперативной памяти. Таким образом, после окончания процесса не будет возможности сохранить ваш список в оперативной памяти. Вам нужно будет записать свой список в файл и читать его каждый раз, когда выполняете код.

Это может помочь: http://www.pythonforbeginners.com/files/reading-and-writing-files-in-python

0 голосов
/ 06 июля 2018

Вам необходимо сохранить данные между запусками. Один из способов сделать это - использовать модуль pickle, который я покажу здесь, поскольку он очень прост. Альтернативой будет использование JSON. Эти методы могут сохранить (или сериализовать) объект данных Python. Это отличается от простого написания текста в текстовый файл.

import pickle

my_list = [0, 0, 0, 0, 0]

# Save my_list
file = open("save.txt", "wb") # "wb" means write binary (as opposed to plain text)
pickle.dump(my_list, file)
file.close()

# Close and restart your Python session

file = open("save.txt", "rb") # "rb" means read binary
new_list = pickle.load(file)
file.close()

print(new_list) # -> [0, 0, 0, 0, 0]

Редактировать : Вы заявили, что хотите, чтобы добавления в список происходили автоматически при каждом запуске кода. Этого можно добиться, добавив после загрузки, а затем снова сохранив.

import pickle

# Create an empty list
my_list = []

# Try to load the existing list in a try block in case the file does not exist:
try:
    file = open("save.txt", "rb") # "rb" means read binary
    loaded_list = pickle.load(file)
    file.close()
    my_list += loaded_list
except (OSError, IOError):
    print("File does not exist")

# Append to the list as you want
my_list += [0, 0, 0, 0, 0]

# Save the list again
file = open("save.txt", "wb")
pickle.dump(my_list, file)
file.close()

print(my_list) # This will get bigger every time the script in run
0 голосов
/ 06 июля 2018

Все ваши программные переменные, по определению, являются локальными для области вашей программы. Когда вы выходите из программы, операционная система получает возможность освободить место. Чтобы данные сохранялись после завершения программы, вам нужно хранить их где-то еще, например, в файле - ресурсе, не подверженном изменчивому существованию системы времени исполнения Python.

Я верю, что вы можете искать файловые операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...