ใช้ a สำหรับลูปฉันจะเข้าถึงดัชนีลูปได้อย่างไรจาก 1 ถึง 5 ในกรณีนี้
ใช้enumerate
เพื่อรับดัชนีพร้อมองค์ประกอบในขณะที่คุณทำซ้ำ:
for index, item in enumerate(items):
print(index, item)
และโปรดทราบว่าดัชนีของไพ ธ อนเริ่มต้นที่ศูนย์ดังนั้นคุณจะได้ 0 ถึง 4 ตามด้านบน หากคุณต้องการการนับ 1 ถึง 5 ให้ทำดังนี้:
for count, item in enumerate(items, start=1):
print(count, item)
การควบคุมแบบไม่ไหล
สิ่งที่คุณต้องการคือ Pythonic ที่เทียบเท่ากับสิ่งต่อไปนี้ซึ่งเป็นอัลกอริธึมที่โปรแกรมเมอร์ส่วนใหญ่ใช้ภาษาระดับต่ำกว่า:
index = 0 # Python's indexing starts at zero
for item in items: # Python's for loops are a "for each" loop
print(index, item)
index += 1
หรือในภาษาที่ไม่มีลูปสำหรับแต่ละวง:
index = 0
while index < len(items):
print(index, items[index])
index += 1
หรือบางครั้งพบมากขึ้น (แต่ไม่พบโดยไม่รู้ตัว) ใน Python:
for index in range(len(items)):
print(index, items[index])
ใช้ฟังก์ชั่นการแจกแจง
enumerate
ฟังก์ชั่นของ Python ช่วยลดความยุ่งเหยิงทางสายตาโดยการซ่อนการบัญชีสำหรับดัชนีและห่อหุ้ม iterable ลงใน iterable อีกอันหนึ่ง ( enumerate
วัตถุ) ที่ให้ผลลัพธ์เป็นสองสิ่งสองสิ่งของดัชนีและรายการที่มันสามารถทำได้ ดูเหมือนว่า:
for index, item in enumerate(items, start=0): # default is zero
print(index, item)
ตัวอย่างโค้ดนี้ค่อนข้างดีเป็นที่ยอมรับตัวอย่างของความแตกต่างระหว่างรหัสที่เป็นสำนวนของงูใหญ่และรหัสที่ไม่ได้เป็น รหัสสำนวนมีความซับซ้อน (แต่ไม่ซับซ้อน) Python เขียนในลักษณะที่ตั้งใจจะใช้ ผู้ออกแบบภาษาต้องคาดหวังรหัสภาษาซึ่งหมายความว่าโดยปกติแล้วรหัสนี้จะไม่เพียง แต่อ่านง่ายขึ้น แต่ยังมีประสิทธิภาพมากกว่า
ได้รับการนับ
แม้ว่าคุณไม่ต้องการดัชนีในขณะที่คุณไป แต่คุณต้องมีการนับซ้ำ (บางครั้งเป็นที่ต้องการ) คุณสามารถเริ่มต้นด้วย1
และหมายเลขสุดท้ายจะเป็นจำนวนของคุณ
for count, item in enumerate(items, start=1): # default is zero
print(item)
print('there were {0} items printed'.format(count))
การนับดูเหมือนจะเป็นสิ่งที่คุณตั้งใจจะขอ (เมื่อเทียบกับดัชนี) เมื่อคุณพูดว่าคุณต้องการตั้งแต่ 1 ถึง 5
ทำลายมันลง - คำอธิบายทีละขั้นตอน
หากต้องการทำลายตัวอย่างเหล่านี้สมมติว่าเรามีรายการที่เราต้องการทำซ้ำด้วยดัชนี:
items = ['a', 'b', 'c', 'd', 'e']
ตอนนี้เราผ่าน iterable นี้เพื่อแจกแจงสร้างวัตถุแจกแจง:
enumerate_object = enumerate(items) # the enumerate object
เราสามารถดึงไอเท็มแรกออกมาจาก iterable นี้ที่เราจะได้วนเข้ากับnext
ฟังก์ชัน:
iteration = next(enumerate_object) # first iteration from enumerate
print(iteration)
และเราเห็นว่าเราได้รับ tuple จาก0
ดัชนีแรกและ'a'
รายการแรก:
(0, 'a')
เราสามารถใช้สิ่งที่เรียกว่า " ลำดับการเปิดออก " เพื่อแยกองค์ประกอบจากสอง tuple นี้:
index, item = iteration
# 0, 'a' = (0, 'a') # essentially this.
และเมื่อเราตรวจสอบindex
เราพบว่ามันหมายถึงดัชนีแรก 0 และitem
อ้างอิงถึงรายการแรก, 'a'
.
>>> print(index)
0
>>> print(item)
a
ข้อสรุป
- ดัชนี Python เริ่มต้นที่ศูนย์
- ในการรับดัชนีเหล่านี้จากการทำซ้ำในขณะที่คุณทำซ้ำมากกว่านั้นให้ใช้ฟังก์ชันการแจกแจง
- การใช้แจงนับในทางที่เป็นสำนวน (พร้อมกับการเปิดไฟล์ tuple) สร้างรหัสที่อ่านได้ง่ายและบำรุงรักษามากขึ้น:
ดังนั้นทำสิ่งนี้:
for index, item in enumerate(items, start=0): # Python indexes start at zero
print(index, item)