Инициализация списка с фиксированным числом элементов

Для неизменяемых элементов (например , None , строковые литералы и т.д.):

 my_list = [None] * 10
my_list = ['test'] * 10

 

Для изменяемых элементов, та же конструкция , приведет все элементы списка со ссылкой на тот же объект, например, для набора:

 >>> my_list=[{1}] * 10
>>> print(my_list)
[{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}]
>>> my_list[0].add(2)
>>> print(my_list)
[{1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}]

 

Вместо того , чтобы инициализировать список с фиксированным числом различных изменяемых объектов, используйте:

 my_list=[{1} for _ in range(10)]