Инициализация списка с одинаковым булевым значением
Заголовок: Как инициализировать все значения списка булевыми значениями без использования циклов?
Текст вопроса: Я хотел бы узнать, возможно ли инициализировать все значения списка определённым булевым значением без использования циклов. Например, мне нужно создать список из N элементов, где все элементы равны False. Как это можно сделать?
2 ответ(ов)
Вы можете сделать это так:
>>> [False] * 10
[False, False, False, False, False, False, False, False, False, False]
ПРИМЕЧАНИЕ:
Имейте в виду, что никогда не следует использовать это с списками
изменяемых типов, имеющих одно и то же значение, иначе вы можете столкнуться с неожиданным поведением, как в приведенном ниже примере:
>>> my_list = [[10]] * 3
>>> my_list
[[10], [10], [10]]
>>> my_list[0][0] = 5
>>> my_list
[[5], [5], [5]]
Как вы можете видеть, изменения, внесенные в один внутренний список, отражаются во всех остальных.
Ваш код создаёт список, заполненный значениями False
, используя генератор списка. Вот как он выглядит:
my_list = [False for i in range(n)]
Такой подход позволяет вам изменить отдельные элементы списка, поскольку он создаёт каждый элемент независимо.
Хотя, строго говоря, это всё же является циклом.
Как получить последний элемент списка?
Как клонировать список, чтобы он не изменялся неожиданно после присваивания?
Диапазон букв в Python
Нахождение среднего значения списка
Вывод списка в обратном порядке с помощью функции range()