2009-06-07 30 views

Trả lời

12

Dưới đây là cách pythonic để viết vòng lặp này:

for index, obj in enumerate(objects): 
    # Use index, obj. 

enumerate công trình trên bất kỳ chuỗi không phụ thuộc vào loại phần tử của nó. Nó là một hàm dựng sẵn.

Edit:

Sau khi chạy một số timeit kiểm tra sử dụng Python 2.5, tôi thấy enumerate là hơi chậm:

>>> timeit.Timer('for i in xrange(len(seq)): x = i + seq[i]', 'seq = range(100)').timeit() 
10.322299003601074 
>>> timeit.Timer('for i, e in enumerate(seq): x = i + e', 'seq = range(100)').timeit() 
11.850601196289062 
+0

Có hiệu quả hơn? –

+0

@Bastien - Sau một số kiểm tra timeit, tôi thấy 'liệt kê' hơi chậm hơn mã trong câu hỏi. Tôi sẽ cập nhật câu trả lời của mình. –

+0

trong kết quả py3k khá ngược lại: phạm vi phiên bản chậm hơn 3 lần so với phiên bản liệt kê. – SilentGhost

Các vấn đề liên quan