Có phải len(list)
tính toán độ dài của danh sách mỗi khi nó được gọi, hay nó trả về giá trị của bộ đếm tích hợp?
Tôi có một bối cảnh mà tôi cần phải kiểm tra độ dài của một danh sách mỗi khi qua một vòng lặp, như:Trong python, len (danh sách) làm gì?
listData = []
for value in ioread():
if len(listData)>=25:
processlistdata()
clearlistdata()
listData.append(value)
Tôi có nên kiểm tra len(listData)
trên mỗi lần lặp, hay tôi nên có một bộ đếm cho độ dài của danh sách ?
Tôi 99,9% tích cực rằng bất kỳ loại trình tự nào trong các ngôn ngữ cấp cao sẽ lưu trữ độ dài của nó. Các hàm 'len' (hoặc' strlen' hoặc 'length') trong Python, Perl, và Ruby (và các ngôn ngữ khác) không bao giờ nên dùng thời gian O (N). –
Tôi sẽ thay thế mã của bạn bằng 'cho chunk trong cá mú (ioread(), 25): process (chunk)' Where 'grouper()' được định nghĩa tương tự như http://docs.python.org/library/itertools. html # recipes (bạn có thể thay thế 'izip_longest()' bằng 'izip()' để giảm các giá trị cuối cùng khi mã của bạn làm). – jfs
Bạn có đo hai phiên bản để xem phiên bản nào thực sự nhanh hơn không? Việc sử dụng 'timeit' và đăng kết quả của bạn dễ dàng hơn để chúng tôi có thể nhận xét về chúng. –