使用相同的bool值初始化列表

Ale*_*ecs 46 python boolean initialization list

是否有可能没有循环将所有列表值初始化为某些bool?例如,我想要一个N个元素的列表都是False.

Roh*_*ain 103

你可以这样做: -

>>> [False] * 10
[False, False, False, False, False, False, False, False, False, False]
Run Code Online (Sandbox Code Playgroud)

注: - 需要注意的是,你永远不应该有一个做到这一点listmutable types有相同的值,否则你会看到像在下面的例子中令人惊讶的行为: -

>>> my_list = [[10]] * 3
>>> my_list
[[10], [10], [10]]
>>> my_list[0][0] = 5
>>> my_list
[[5], [5], [5]]
Run Code Online (Sandbox Code Playgroud)

如您所见,您在一个内部列表中所做的更改将反映在所有这些内容中.

  • 这绝对是这个问题的正确习惯用语.然而,当你处理一个可变类型时,它绝对是不正确的习惯用法:`[[]]*10`对新来者有一些令人惊讶的后果:). (11认同)

小智 14

    my_list = [False for i in range(n)]
Run Code Online (Sandbox Code Playgroud)

这将允许您更改单个元素,因为它独立构建每个元素.

虽然,这在技术上一个循环.

  • 为什么不只是`range(n)`? (6认同)

Way*_*inn 5

当空间重要时,bytearray是一个更好的选择.它的空间效率大约是布尔解决方案列表的五倍.

这会创建一个N值数组,初始化为零:

B = bytearray(N)
Run Code Online (Sandbox Code Playgroud)