2011-05-10 27 views

Trả lời

10
for lineno, line in enumerate(f, start=1): 

Nếu bạn đang bị mắc kẹt trên một phiên bản của Python mà không cho phép bạn thiết lập các số bắt đầu cho enumerate (tính năng này đã được bổ sung bằng Python 2.6), và bạn muốn sử dụng tính năng này, giải pháp tốt nhất có thể là cung cấp một thực hiện, thay vì điều chỉnh chỉ số được trả về bởi hàm dựng sẵn. Đây là một thực hiện như vậy.

def enumerate(iterable, start=0): 
    for item in iterable: 
     yield start, item 
     start += 1 
1

Nếu bạn đang sử dụng python2.6 +, câu trả lời của kindall bao gồm nó

python2.5 và trước đó không hỗ trợ đối số thứ hai để enumertate, vì vậy bạn cần phải sử dụng một cái gì đó như thế này

for i, line in enumerate(f): 
    lineno = i+1 

hoặc

for lineno, line in ((i+1,j) for i,j in enumerate(f)): 

Trừ khi bạn là ok với dòng đầu tiên là số 0

+0

Mọi người vẫn đang sử dụng phiên bản 2.5 trở xuống ngoại trừ các lý do hỗ trợ kế thừa? –

+1

@Karl, Nếu tôi không nhầm, google appengine đang sử dụng 2.5.x –

+0

@Karl, tôi đã trả lời câu hỏi cho một người nào đó sử dụng 2.4 sớm hơn hôm nay –

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