Nhận số vòng lặp trong vòng lặp FOR FOR của Python


259

Trong một forvòng lặp Python lặp lại qua một danh sách, chúng ta có thể viết:

for item in list:
    print item

và nó gọn gàng đi qua tất cả các yếu tố trong danh sách. Có cách nào để biết trong vòng lặp bao nhiêu lần tôi đã lặp đi lặp lại không? Chẳng hạn, tôi muốn lấy một danh sách và sau khi tôi xử lý mười yếu tố tôi muốn làm gì đó với họ.

Các lựa chọn thay thế tôi nghĩ sẽ là một cái gì đó như:

count=0
for item in list:
    print item
    count +=1
    if count % 10 == 0:
        print 'did ten'

Hoặc là:

for count in range(0,len(list)):
    print list[count]
    if count % 10 == 0:
        print 'did ten'

Có cách nào tốt hơn (giống như for item in list) để có được số lần lặp cho đến nay?


1
Bạn cũng có thể quan tâm đến các câu trả lời lặp đi lặp lại một danh sách theo từng đoạn: stackoverflow.com/questions/434287/
Kẻ

Câu trả lời:



86

Đồng ý với Nick. Đây là mã công phu hơn.

#count=0
for idx, item in enumerate(list):
    print item
    #count +=1
    #if count % 10 == 0:
    if (idx+1) % 10 == 0:
        print 'did ten'

Tôi đã nhận xét các biến đếm trong mã của bạn.


9
Bạn cũng có thể sử dụng tham số enumeratetùy chọn startđể bắt đầu liệt kê bằng 1 thay vì 0, mặc dù sau đó tôi sẽ sử dụng tên của OP countthay vì idx.
Stefan Pochmann

Tôi không có ý tưởng rằng có một tham số bắt đầu tùy chọn. Tốt để biết. Cảm ơn
Vikram Garg

1

Tôi biết câu hỏi khá cũ nhưng .... tình cờ thấy điều khác nên tôi đưa ra cú đánh của mình:

[each*2 for each in [1,2,3,4,5] if each % 10 == 0])

1

Sử dụng chức năng zip chúng ta có thể nhận được cả phần tử và chỉ mục.

countries = ['Pakistan','India','China','Russia','USA']

for index, element zip(range(0,countries),countries):

         print('Index : ',index)
         print(' Element : ', element,'\n')

output : Index : 0 Element : Pakistan ...

Xem thêm :

Python.org


0

Hãy thử sử dụng itertools.count([n])


2
Tôi không chắc cách bạn sử dụng tính ở đây. Đếm được sử dụng để tạo ra các chuỗi số.
Codie CodeMonkey

nhưng làm thế nào nó sẽ thiết lập lại giá trị cho lần lặp tiếp theo. Sử dụng itertools.count () là không khả thi ở đây.
Javed
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.