Tôi có một tập lệnh cố đọc điểm bắt đầu và điểm kết thúc cho tập hợp con thông qua tìm kiếm nhị phân, sau đó các giá trị này được sử dụng để tạo một lát để xử lý tiếp.Tại sao `for x trong danh sách [None: None]:` làm việc?
Tôi nhận thấy rằng khi các biến này không được đặt (tìm kiếm trả về Không) mã sẽ vẫn chạy và cuối cùng tôi nhận thấy rằng một lát trải dài từ None đến None hoạt động như kiểm tra toàn bộ danh sách (xem ví dụ bên dưới)).
#! /usr/bin/env python
list = [1,2,3,4,5,6,7,8,9,10]
for x in list[None:None]:
print x
Có ai biết lý do tại sao lựa chọn đã được thực hiện để xem list[None:None]
đơn giản là list[:]
, ít nhất đó là những gì tôi nghĩ điều đó xảy ra (đúng cho tôi nếu tôi sai). Cá nhân tôi sẽ nghĩ rằng ném một TypeError sẽ là mong muốn trong một trường hợp như vậy.
Tôi nghi ngờ lựa chọn này thực sự được thực hiện để xem 'danh sách [:] 'như' danh sách [Không: Không] '. – robert
Có lẽ chính xác trường hợp sử dụng của bạn. Nếu bạn có một điểm 'start' và' end' mà bạn đang thiết lập từ một nơi khác, nếu 'list [None: None]' không hoạt động thì bạn sẽ không có cơ hội phục hồi.Bằng cách này, bạn có thể kiểm tra trước khi tay 'nếu không có bất kỳ (x là Không cho x trong [bắt đầu, kết thúc]):' –