2012-11-14 16 views

Odpowiedz

75

Można zrobić to w ten sposób: -

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

UWAGA: - pamiętać, że nigdy nie powinno się to zrobić z list z mutable types z tej samej wartości, jeszcze widać zaskakujące zachowanie podobnie do jeden w poniższym przykładzie: -

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

Jak widać, zmiany wprowadzone na jednej wewnętrznej liście znajdują odzwierciedlenie we wszystkich z nich.

+10

to absolutnie prawidłowe idiom tego problemu. Jednak jest to absolutnie niepoprawny idiom, który można użyć, gdy mamy do czynienia z zmiennym typem: '[[]] * 10' ma zaskakujące konsekwencje dla nowych graczy :). – mgilson

9
my_list = [False for i in range(n)] 

Pozwoli to na zmianę poszczególnych elementów, ponieważ niezależnie buduje każdy element.

Chociaż technicznie jest to , to jest to pętla o numerze.

+5

Dlaczego nie tylko 'zasięg (n)'? – mgilson

+0

Dobra uwaga! Przypuszczam, że naprawdę nie myślałem o tym, kiedy to pisałem. – Noah

+0

zasięg (n) zaczynałby się od 0, a nie 1. – Vatsal

3

Gdy miejsce ma znaczenie, lepszym wyborem jest bytearray. Jest to około pięć razy więcej miejsca niż lista rozwiązań boolowskich.

Stwarza to szereg N wartości, zerowany:

B = bytearray(N) 
Powiązane problemy