Список Python перезаписывается каждый раз, когда предыдущие элементы
Задача моего приложения состоит в том, чтобы создать копии документов и вставить их в базу данных для каждого аннотатора, например, допустим, у главного пользователя есть 3 документа и два аннотатора, допустим, у первого аннотатора есть email testmail1@mail.com, а у второго - email testmail2@mail.com, в итоге мне нужно вставить в базу данных 3 документа для testmail1@mail.com и 3 других документа для testmail2@mail.com. Для этого я сначала создал список, содержащий копии документов, и не назначил аннотатора
created_documents_in_iaa = []
created_documents_in_iaa += [DocumentIAATask(
name=document.name,
spans=document.spans,
entity=document.entity,
original_document=document,
IAA_Task=iaa_task) for document in all_documents_in_iaa.iterator(chunk_size=1)]
После этого я добавил аннотатор в каждый документ, и каждый измененный список created_documents_in_iaa добавляю к списку tsks_list:
tasks_list = []
for user in users_instance_list:
try:
for i in range(len(created_documents_in_iaa)):
created_documents_in_iaa[i].annotator = user
tasks_list.append(created_documents_in_iaa)
except Exception as e:
print(e)
Наконец, я создал копию документов в базе данных PostgreSQL:
for task in tasks_list:
DocumentIAATask.objects.bulk_create(task)
Однако, в результате, я нашел 6 документов в таблице первого аннотатора, и ничего для другого, после того, как я отладил код, я обнаружил, что tasks_list перезаписывает каждый раз список, это означает, когда я добавляю первый аннотатор в 3 документа, и когда я сделал то же самое для другого аннотатора, список перезаписал предыдущий, это означает, что я нашел в tasks_list 2 объекта, каждый объект содержит 3 документа, и каждый документ содержит одного и того же аннотатора, поэтому второй был изменен после append.
Я попытался решить эту проблему, используя некоторые похожие проблемы, которые я нашел в сети:
tasks_list.append(created_documents_in_iaa[:])tasks_list.append(created_documents_in_iaa.copy())
tasks_list2 += tasks_list2[:] + created_documents_in_iaa
tasks_list.append(tasks_list2)
Однако проблема осталась прежней. Посоветуйте, пожалуйста, что-нибудь?