52

ループなしですべてのリスト値をブール値に初期化することは可能ですか?たとえば、N個の要素のリストをすべてFalseにしたいとします。

4

3 に答える 3

117

あなたはこのようにそれを行うことができます:-

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

注:-list同じ値のを使用 してこれを実行しないでくださいmutable types。そうしないと、以下の例のような驚くべき動作が見られます。-

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

ご覧のとおり、1つの内部リストで行った変更は、すべてのリストに反映されます。

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

これにより、各要素が個別に構築されるため、個々の要素を変更できます。

ただし、これは技術的にはループです。

于 2012-11-14T16:50:40.923 に答える
5

スペースが重要な場合bytearrayは、より良い選択です。ブールソリューションのリストよりも約5倍スペース効率が高くなります。

Nこれにより、ゼロに初期化された値の配列が作成されます。

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