ループなしですべてのリスト値をブール値に初期化することは可能ですか?たとえば、N個の要素のリストをすべてFalseにしたいとします。
質問する
80256 次
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 に答える