บทความนี้จะอธิบายการใช้งานฟังก์ชัน enumerate ที่มีอยู่ในไลบรารีโมดูลมาตรฐานของ Python ฟังก์ชันการแจงนับช่วยให้คุณสามารถกำหนดดัชนีหรือนับให้กับองค์ประกอบในวัตถุที่ทำซ้ำได้ จากนั้นคุณสามารถใช้ตรรกะเพิ่มเติมกับพวกมันได้ เนื่องจากคุณจะสามารถเข้าถึงทั้งค่าและการนับที่แมปกับมันได้
ไวยากรณ์และตัวอย่างพื้นฐาน
หากคุณใช้ for loop ในภาษาการเขียนโปรแกรมอื่นๆ โดยเฉพาะภาษา C และภาษาอื่นๆ ที่มีรูปแบบ C สไตล์ คุณอาจระบุดัชนีเริ่มต้นในลูป สำหรับการอ้างอิง นี่คือสิ่งที่ for loop ดูเหมือนในภาษา C และภาษาอื่นๆ ที่มีไวยากรณ์คล้ายกัน:
สำหรับ (intผม= 0;ผม< 10;ผม++)
{
printf ('%NSNS',ผม);
}
คำสั่งวนรอบเริ่มต้นตัวแปรที่มีค่าเป็นศูนย์ ตรวจสอบว่ามีค่าน้อยกว่าเกณฑ์และเพิ่มขึ้นหนึ่งครั้งหลังจากประเมินตรรกะภายในบล็อกการวนซ้ำ (หากตรงตามเงื่อนไขการหยุด) วิธีนี้คุณสามารถใช้ดัชนีและกำหนดให้กับวัตถุใด ๆ ที่อ้างอิงในบล็อกลูปของคุณ ในการเปรียบเทียบ นี่คือสิ่งที่ for loop ที่มีผลลัพธ์เหมือนกันใน Python:
สำหรับผมใน พิสัย(0, 10):
พิมพ์ (ผม)
ฟังก์ชัน range ใน Python ช่วยให้คุณระบุลำดับช่วงตัวเลขที่มีขั้นตอนเริ่มต้นเป็น 1 ได้ คุณสามารถเปลี่ยนค่าขั้นตอนโดยระบุอาร์กิวเมนต์ที่สาม อาร์กิวเมนต์ที่สองในฟังก์ชัน range ใช้เพื่อกำหนดขีดจำกัดสำหรับเงื่อนไขการหยุด ตัวอย่างโค้ดทั้งสองสร้างเอาต์พุตต่อไปนี้:
0
1
2
3
4
5
6
7
8
9
ลูปเหล่านี้ทำงานได้ดีถ้าคุณต้องการสร้างลำดับตัวเลขและเชื่อมโยงกับตรรกะบางอย่างภายในคำสั่งลูป อย่างไรก็ตาม คุณอาจต้องใช้ลูปที่ซ้อนกันอื่นหรือใช้ฟังก์ชันผลตอบแทนกับประเภท iterable เพื่อกำหนดจำนวนที่ติดตามได้ วิธีการแจกแจงทำให้ง่ายต่อการกำหนดดัชนีให้กับ iterables ในคำสั่งเดียว จึงไม่จำเป็นต้องรันการวนซ้ำซ้อนกันหลายรายการ ดูตัวอย่างโค้ดนี้:
ตัวเลข= ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า']
enumerated_numbers= จดทะเบียน(ตัวเลข)
สำหรับดัชนี,รายการในระบุ_numbers:
พิมพ์ (ดัชนี,รายการ)
คำสั่งแรกกำหนดตัวแปรใหม่ที่เรียกว่าตัวเลขและกำหนด iterable (ประเภทรายการ) ให้กับมัน คำสั่งที่สองแสดงการใช้ฟังก์ชัน enumerate ที่คุณระบุ iterable เป็นอาร์กิวเมนต์บังคับ คำสั่งที่สามแปลงตัวแปร enumerated_numbers เป็นอ็อบเจ็กต์ประเภทรายการ โดยค่าเริ่มต้น ฟังก์ชัน enumerate จะสร้างอ็อบเจ็กต์ประเภท enumerate ไม่ใช่ประเภท iterable ดังนั้นคุณต้องแปลง หลังจากรันโค้ดตัวอย่างที่กล่าวถึงข้างต้น คุณควรได้รับผลลัพธ์ต่อไปนี้:
[(0, 'ศูนย์'), (1 'หนึ่ง'), (2 'สอง'), (3 'สาม'), (4, 'สี่'), (5, 'ห้า')]ฟังก์ชัน enumerate กำหนดจำนวนให้กับแต่ละองค์ประกอบในประเภท iterable และสร้าง tuples ที่มีค่าที่จับคู่กัน โดยค่าเริ่มต้น การนับจะเริ่มต้นจากศูนย์
ตอนนี้คุณได้กำหนดตัวเลขให้กับแต่ละองค์ประกอบในประเภท iterable แล้ว คุณสามารถวนซ้ำได้อย่างง่ายดายโดยไม่ต้องเขียนคำสั่งที่ซ้อนกัน:
ตัวเลข= ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า']enumerated_numbers= จดทะเบียน(ตัวเลข)
สำหรับดัชนี,รายการในระบุ_numbers:
พิมพ์ (ดัชนี,รายการ)
ตัวอย่างโค้ดที่ระบุด้านบนจะสร้างผลลัพธ์ต่อไปนี้:
0 ศูนย์1 ตัว
2 สอง
3 สาม
4 สี่
5 ห้า
คุณสามารถทำให้โค้ดสั้นลงได้โดยใช้ฟังก์ชัน enumerate ในบรรทัด ดังที่แสดงในตัวอย่างด้านล่าง:
ตัวเลข= ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า']สำหรับดัชนี,รายการใน จดทะเบียน(ตัวเลข):
พิมพ์ (ดัชนี,รายการ)
การใช้แจงนับด้วยดัชนีเริ่มต้นที่แตกต่างกัน
ฟังก์ชันแจกแจงใช้อาร์กิวเมนต์ที่เป็นทางเลือก ซึ่งคุณสามารถระบุดัชนีเริ่มต้นได้ โดยค่าเริ่มต้นจะเป็นศูนย์ แต่คุณสามารถเปลี่ยนได้โดยใช้อาร์กิวเมนต์ start:
ตัวเลข= ['หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า']สำหรับดัชนี,รายการใน จดทะเบียน(ตัวเลข,เริ่ม=1):
พิมพ์ (ดัชนี,รายการ)
ในคำสั่งที่สอง อาร์กิวเมนต์ start=1 ใช้เพื่อเปลี่ยนจุดเริ่มต้น หลังจากรันโค้ดตัวอย่างที่ระบุข้างต้น คุณควรได้รับผลลัพธ์ต่อไปนี้:
1 ตัว2 สอง
3 สาม
4 สี่
5 ห้า
การกำหนดดัชนีด้วยขั้นตอน
ในส่วนแรกของบทความนี้ ไวยากรณ์ for for loop ในภาษา C จะแสดงขึ้น ซึ่งคุณสามารถกำหนดขั้นตอนระหว่างจำนวนหรือดัชนีที่ตามมาแต่ละรายการ ฟังก์ชันแจกแจงใน Python ไม่มีอาร์กิวเมนต์ดังกล่าว ดังนั้นคุณจึงไม่สามารถระบุขั้นตอนระหว่างการนับได้ คุณสามารถเขียนตรรกะของคุณเองเพื่อนำขั้นตอนต่างๆ ไปใช้ในการแจกแจงบล็อกลูปได้ อย่างไรก็ตาม มีวิธีการใช้ขั้นตอนแบบกำหนดเองโดยการเขียนโค้ดขั้นต่ำ ตัวอย่างต่อไปนี้แสดงการใช้งานขั้นตอนโดยใช้ฟังก์ชัน zip และ range:
ตัวเลข= ['ศูนย์', 'สอง', 'สี่', 'หก']สำหรับดัชนี,รายการใน zip(พิสัย(0, 7, 2),ตัวเลข):
พิมพ์ (ดัชนี,รายการ)
ฟังก์ชัน zip ช่วยให้คุณสร้างคู่ได้โดยเลือกองค์ประกอบที่มีดัชนีเดียวกันจาก iterables สองรายการขึ้นไป ดังนั้น ฟังก์ชัน zip จะรับองค์ประกอบจากฟังก์ชัน iterable ที่ส่งคืนจากฟังก์ชัน range(0, 7, 2) และองค์ประกอบอื่นจากรายการตัวเลข จากนั้นจึงจับคู่ทั้งสองเข้ากับ tuple ผลลัพธ์ที่ได้คือการใช้งานที่เหมือนกันกับฟังก์ชันแจงนับ แต่มีขั้นตอนแบบกำหนดเองที่ระบุเป็นอาร์กิวเมนต์ที่สามในฟังก์ชัน range(0, 7, 2) (2 ในกรณีนี้) หลังจากรันโค้ดตัวอย่างที่ระบุข้างต้น คุณควรได้รับผลลัพธ์ต่อไปนี้:
0 ศูนย์2 สอง
4 สี่
6 หก
บทสรุป
ฟังก์ชันแจกแจงใน Python ช่วยให้คุณเขียนโค้ดที่กระชับโดยกำหนดลำดับตัวเลขให้กับองค์ประกอบในอ็อบเจกต์ที่ทำซ้ำได้ สิ่งนี้มีประโยชน์จริง ๆ หากคุณต้องการติดตามดัชนีของรายการภายในประเภทที่ทำซ้ำได้ หากคุณต้องการระบุประเภทที่วนซ้ำได้ด้วยขั้นตอนที่กำหนดเอง ให้ใช้ฟังก์ชัน zip ที่อธิบายไว้ในตัวอย่างที่แล้ว