ใช้ฟังก์ชันแจกแจงใน Python เพื่อสร้างลูปด้วย Counters

Use Enumerate Function Python Create Loops With Counters



บทความนี้จะอธิบายการใช้งานฟังก์ชัน 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 ที่อธิบายไว้ในตัวอย่างที่แล้ว