Мне очень жаль, если об этом уже спрашивали, но, хотя я мог найти что-то похожее, я не нашел своей конкретной проблемы c. У меня Python 3.7.4 - 64 бит. В основном я хочу инициализировать словарь, где каждый элемент представляет собой список пустых списков. Проблема в том, что, как я это делаю сейчас, я получаю, что каждый пустой подсписок из списка разных элементов - это один и тот же объект, хотя я назначаю копию списка каждому элементу. Как видно из кода ниже, каждый подсписок в empty_list_of_lists
- это отдельный объект. Затем я назначаю элементы в словарь как копию empty_list_of_lists
. Когда я звоню my_dict['a'] is my_dict['b']
, я получаю ожидаемое False
, но когда я звоню my_dict['a'][0] is my_dict['b'][0]
, я получаю True
, что меня озадачивает, потому что empty_list_of_lists[0] is empty_list_of_lists[1]
возвращает False
, а я не получаю лог c. Как я должен go об этом?
Вот мой код:
empty_list_of_lists = [[] for i in range(5)]
print(empty_list_of_lists[0] is empty_list_of_lists[1]) # returns False --> expected
dict1 = {'a': empty_list_of_lists.copy(), 'b': empty_list_of_lists.copy()}
print(dict1['a'] is dict1['b']) # returns False --> expected
print(dict1['a'][0] is dict1['b'][0]) # returns True --> What?