52

没有循环是否可以将所有列表值初始化为某个布尔值?例如,我想要一个包含 N 个元素的列表,全部为 False。

4

3 回答 3

117

你可以这样做: -

>>> [False] * 10
[False, False, False, False, False, False, False, False, False, False]

注意: - 请注意,您永远不应该使用具有相同值的 alist来执行此操作mutable types,否则您会看到以下示例中的令人惊讶的行为:-

>>> my_list = [[10]] * 3
>>> my_list
[[10], [10], [10]]
>>> my_list[0][0] = 5
>>> my_list
[[5], [5], [5]]

如您所见,您在一个内部列表中所做的更改会反映在所有列表中。

于 2012-11-14T16:22:48.397 回答
18
    my_list = [False for i in range(n)]

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

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

于 2012-11-14T16:50:40.923 回答
5

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

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

B = bytearray(N)
于 2017-02-24T18:34:42.900 回答