รับการนับลูปภายใน Python FOR


259

ในไพ ธ อน for loop ที่วนซ้ำในรายการเราสามารถเขียน:

for item in list:
    print item

และมันจะผ่านองค์ประกอบทั้งหมดในรายการอย่างเรียบร้อย มีวิธีที่จะรู้ในวงกี่ครั้งที่ฉันได้วนซ้ำจนถึงขณะนี้? ตัวอย่างเช่นฉันต้องการทำรายการและหลังจากที่ฉันได้ประมวลผลองค์ประกอบสิบรายการฉันต้องการทำบางสิ่งกับพวกเขา

ทางเลือกที่ฉันคิดเกี่ยวกับจะเป็นเช่น:

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

หรือ:

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

มีวิธีที่ดีกว่า (เช่นเดียวกับfor item in list) เพื่อให้ได้จำนวนการทำซ้ำจนถึงตอนนี้หรือไม่


1
คุณอาจสนใจคำตอบสำหรับการวนซ้ำรายการในกลุ่ม: stackoverflow.com/questions/434287/…
Dave Bacher

คำตอบ:



86

เห็นด้วยกับนิค นี่คือรหัสที่ละเอียดยิ่งขึ้น

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

ฉันได้แสดงความคิดเห็นตัวแปรนับในรหัสของคุณ


9
นอกจากนี้คุณยังสามารถใช้enumerateเป็นตัวเลือกstartพารามิเตอร์ที่จะเริ่มต้นแจง 1 แทน 0 แต่แล้วผมใช้ชื่อของ OP แทนcount idx
Stefan Pochmann

ฉันไม่ทราบว่ามีพารามิเตอร์เริ่มต้นที่เป็นตัวเลือก ดีแล้วที่รู้. ขอบคุณ
Vikram Garg

1

ฉันรู้คำถามที่ค่อนข้างเก่า แต่ .... เจอสิ่งอื่นดังนั้นฉันจึงให้ภาพ:

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

1

ใช้ฟังก์ชั่น zip เราสามารถรับทั้งองค์ประกอบและดัชนี

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 ...

ดูสิ่งนี้ด้วย :

Python.org


0

ลองใช้ itertools.count([n])


2
ฉันไม่แน่ใจว่าคุณจะนับที่นี่ได้อย่างไร การนับใช้เพื่อสร้างลำดับของตัวเลข
Codie CodeMonkey

แต่มันจะรีเซ็ตค่าสำหรับการวนซ้ำครั้งถัดไปได้อย่างไร ใช้ itertools.count () เป็นไปไม่ได้ที่นี่
Javed
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.