Можно ли без циклов инициализировать все значения списка для некоторого bool? Например, я хочу, чтобы список из N элементов был False.
Инициализировать список с одинаковым значением bool
Ответ 1
Вы можете сделать это следующим образом: -
>>> [False] * 10
[False, False, False, False, False, False, False, False, False, False]
ПРИМЕЧАНИЕ: -
Обратите внимание, что вы никогда не должны делать этого с list
of mutable types
с тем же значением, иначе вы увидите удивительное поведение, подобное приведенному ниже: -
>>> my_list = [[10]] * 3
>>> my_list
[[10], [10], [10]]
>>> my_list[0][0] = 5
>>> my_list
[[5], [5], [5]]
Как вы можете видеть, изменения, внесенные вами в один внутренний список, отражены во всех них.
Ответ 2
my_list = [False for i in range(n)]
Это позволит вам изменять отдельные элементы, поскольку он самостоятельно создает каждый элемент.
Хотя это технически является циклом.
Ответ 3
Когда пространство имеет значение, bytearray
- лучший выбор. Это примерно в пять раз больше пространства, чем список булевых решений.
Это создает массив значений N
, инициализированных до нуля:
B = bytearray(N)