Is it possible without loops initialize all list values to some bool? For example I want to have a list of N elements all False.
Asked
Active
Viewed 8.4k times
3 Answers
121
You can do it like this: -
>>> [False] * 10
[False, False, False, False, False, False, False, False, False, False]
NOTE: -
Note that, you should never do this with a list
of mutable types
with same value, else you will see surprising behaviour like the one in below example: -
>>> my_list = [[10]] * 3
>>> my_list
[[10], [10], [10]]
>>> my_list[0][0] = 5
>>> my_list
[[5], [5], [5]]
As you can see, changes you made in one inner list, is reflected in all of them.

Rohit Jain
- 209,639
- 45
- 409
- 525
-
16This is absolutely the correct idiom for this problem. However, it is absolutely the incorrect idiom to use when you're dealing with a mutable type: `[[]]*10` has some surprising consequences for new comers :). – mgilson Nov 14 '12 at 16:36
-
See [this link](https://bugs.python.org/issue27135) why you shouldn't create a list of mutable types using multiplication. – jdhao Nov 19 '20 at 10:57
19
my_list = [False for i in range(n)]
This will allow you to change individual elements since it builds each element independently.
Although, this technically is a loop.

Joel Christophel
- 2,604
- 4
- 30
- 49

Noah
- 319
- 1
- 5
5
When space matters, bytearray
is a better choice. It's roughly five times more space efficient than the list of boolean solution.
This creates an array of N
values, initialized to zero:
B = bytearray(N)

Waylon Flinn
- 19,969
- 15
- 70
- 72