2012-11-14 31 views

Trả lời

75

Bạn có thể làm điều đó như thế này: -

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

LƯU Ý: - Lưu ý rằng, bạn không bao giờ nên làm điều này với một list của mutable types với cùng một giá trị, nếu không bạn sẽ nhìn thấy hành vi đáng ngạc nhiên như một ví dụ bên dưới: -

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

Như bạn có thể thấy, những thay đổi bạn đã thực hiện trong một danh sách bên trong, được phản ánh trong tất cả chúng.

+10

này là hoàn toàn thành ngữ chính xác cho vấn đề này. Tuy nhiên, nó hoàn toàn là thành ngữ không chính xác để sử dụng khi bạn đang xử lý một loại có thể thay đổi: '[[]] * 10' có một số hậu quả đáng ngạc nhiên cho những người mới :). – mgilson

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

Điều này sẽ cho phép bạn thay đổi các yếu tố riêng lẻ vì nó xây dựng từng phần tử một cách độc lập.

Mặc dù, kỹ thuật này một vòng lặp.

+5

Tại sao không chỉ 'phạm vi (n)'? – mgilson

+0

Điểm tốt! Tôi cho rằng tôi đã không thực sự nghĩ về nó khi tôi đang gõ nó. – Noah

+0

phạm vi (n) sẽ bắt đầu từ 0, không phải 1. – Vatsal

3

Khi không gian quan trọng, bytearray là lựa chọn tốt hơn. Đó là khoảng năm lần không gian hiệu quả hơn so với danh sách các giải pháp boolean.

Điều này tạo ra một loạt các N giá trị, khởi tạo zero:

B = bytearray(N) 
Các vấn đề liên quan