สำหรับวนซ้ำใน Python
คำสั่ง for loop ใน Python จะวนซ้ำสมาชิกของอ็อบเจ็กต์ รายการ สตริง ฯลฯ ตามลำดับ เมื่อเทียบกับภาษาโปรแกรมอื่นๆ ไวยากรณ์ของมันจะสะอาดกว่ามากและไม่ต้องการการกำหนดขั้นตอนการวนซ้ำและการเริ่มต้นการวนซ้ำด้วยตนเอง แม้ว่าจะมีวิธีที่จะทำให้ลักษณะการทำงานเหมือนกับภาษาโปรแกรมอื่นๆ (จะไม่ครอบคลุมในบทความนี้) คุณยังสามารถใช้การควบคุมลูปโดยใช้คำสั่งเช่น Continue, break, pass เป็นต้น ด้านล่างนี้เป็นตัวอย่างง่ายๆ ของ for loop ใน Python:
สำหรับNSใน พิสัย(10):
พิมพ์(NS)
for loop ด้านบนจะพิมพ์ตัวเลขสิบตัวเริ่มต้นจาก 0 และสิ้นสุดที่ 9
แสดงรายการความเข้าใจ
ความเข้าใจรายการเป็นเพียงวิธีการจดชวเลข / รัดกุมในการเขียนหลายบรรทัดสำหรับลูปในคำสั่งบรรทัดเดียว ตัวอย่างการทำความเข้าใจรายการด้านล่างจะสร้างรายการใหม่เป็น [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] โดยรวมค่าทั้งหมดของ x ไว้ด้วย
ตัวเลข= [NSสำหรับNSใน พิสัย(10)]
พิมพ์ (ตัวเลข)
โปรดทราบว่าการทำความเข้าใจรายการจะสร้างรายการใหม่เสมอและจะไม่แก้ไขการทำซ้ำเดิมที่ใช้ในนิพจน์ นิพจน์ความเข้าใจรายการทั่วไปต้องมี for และสามารถตามด้วยคำสั่งเงื่อนไข if และ else โดยไม่ใช้ความเข้าใจรายการ ตัวอย่างข้างต้นจะถูกเขียนในลักษณะดังต่อไปนี้:
ตัวเลข= []
สำหรับNSใน พิสัย(10):
ตัวเลขผนวก(NS)
พิมพ์ (ตัวเลข)
ประสิทธิภาพและความสามารถในการอ่าน
ความเข้าใจรายการเร็วกว่าการวนซ้ำ อย่างไรก็ตาม คุณจะไม่สังเกตเห็นการปรับปรุงประสิทธิภาพที่สำคัญ เว้นแต่คุณจะทำซ้ำหลายแสนรายการ แม้ว่าการเข้าใจรายการจะเป็นวิธีที่กระชับในการเขียนลูป แต่นิพจน์ที่ซับซ้อนอาจทำให้โค้ดอ่านได้ไม่ดีและมีการใช้คำฟุ่มเฟือยเพิ่มขึ้น สิ่งสำคัญคือต้องทำให้โค้ดสามารถอ่านได้ เว้นแต่ว่าการบรรลุประสิทธิภาพสูงสุดนั้นจำเป็นอย่างยิ่งสำหรับโปรแกรมของคุณ
ตัวอย่าง: การใช้ไวยากรณ์ List Comprehensions กับ Dictionaries and Sets
พจนานุกรมหลามคือชุดขององค์ประกอบที่กำหนดไว้ในคู่คีย์-ค่า ในขณะที่ชุดคือชุดของค่าที่ไม่ซ้ำกันซึ่งไม่อนุญาตให้ทำซ้ำ ความเข้าใจรายการสามารถใช้กับพจนานุกรมและชุดของ Python ได้เช่นกัน ไวยากรณ์แตกต่างกันเล็กน้อย แทนที่จะปิดนิพจน์ในวงเล็บเหลี่ยม ตอนนี้คุณจะต้องใช้วงเล็บปีกกา คุณยังจะได้รับพจนานุกรมใหม่ / ชุดวัตถุแทนรายการใหม่
ข้อมูล= {'เมือง':'นิวยอร์ก', 'ชื่อ':'จอห์น โด'}
formatted_data= {เค: ว.ชื่อ() สำหรับถึง,วีในข้อมูล.รายการ()}
พิมพ์ (formatted_data)
ตัวอย่างข้างต้นจะแปลงค่าสตริงเป็นตัวพิมพ์ชื่อเรื่อง และสร้างพจนานุกรมใหม่ชื่อ formatted_data ซึ่งผลลัพธ์จะเป็น: {'city': 'New York', 'name': 'John Doe'} คุณยังสามารถเปลี่ยนพจนานุกรม / ตั้งค่าแทนที่ได้โดยการระบุตัวแปรพจนานุกรมที่มีอยู่ทางด้านซ้ายมือ
ข้อมูล= {'เมือง':'นิวยอร์ก', 'ชื่อ':'จอห์น โด'}ข้อมูล= {เค: ว.ชื่อ() สำหรับถึง,วีในข้อมูล.รายการ()}
พิมพ์ (ข้อมูล)
หากไม่มีความเข้าใจในพจนานุกรม โค้ดจะมีลักษณะดังนี้:
ข้อมูล= {'เมือง':'นิวยอร์ก', 'ชื่อ':'จอห์น โด'}formatted_data= {}
สำหรับถึง,วีในข้อมูล.รายการ():
formatted_data[ถึง] =วีชื่อ()
พิมพ์ (formatted_data)
เนื่องจากไม่มีคู่คีย์-ค่าในชุด ความเข้าใจชุดสามารถกำหนดในลักษณะเดียวกับความเข้าใจรายการ ข้อแตกต่างเพียงอย่างเดียวคือการใช้เครื่องมือจัดฟันแบบหยิก
ตัวอย่าง: Multiple For Loops ใน List Comprehension
ตัวอย่างความเข้าใจรายการดังกล่าวข้างต้นเป็นพื้นฐานและใช้คำสั่งเดียว ด้านล่างนี้เป็นตัวอย่างที่ใช้หลายลูปและคำสั่งเงื่อนไข if
คำคุณศัพท์= ['ดิสก์', 'อีอัน', 'โฟกัส', 'เก่ง']สัตว์= ['ดิงโก้', 'เออร์มีน', 'หลุม', 'บีเวอร์']
ชื่อรหัส= [x +''+ และสำหรับNSในคำคุณศัพท์สำหรับและในสัตว์ถ้าและ.เริ่มต้นด้วย(NS[0])]
พิมพ์ (ชื่อรหัส)
รหัสจะแสดง ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] เป็นเอาต์พุต two for loops ใช้แทนคำคุณศัพท์และรายชื่อสัตว์ และสมาชิกจะรวมกันโดยใช้ช่องว่าง เฉพาะในกรณีที่อักษรตัวแรกของทั้งสองคำเหมือนกัน หากไม่ใช้การทำความเข้าใจรายการ โค้ดจะมีลักษณะดังนี้:
คำคุณศัพท์= ['ดิสก์', 'อีอัน', 'โฟกัส', 'เก่ง']สัตว์= ['ดิงโก้', 'เออร์มีน', 'หลุม', 'บีเวอร์']
ชื่อรหัส= []
สำหรับNSในคำคุณศัพท์:
สำหรับและในสัตว์:
ถ้าและ.เริ่มต้นด้วย(NS[0]):
ชื่อรหัสผนวก(x +''+ และ)
พิมพ์ (ชื่อรหัส)
ตัวอย่าง: List Comprehension with if-else Clause
ตัวอย่างด้านล่างจะแสดงการใช้คำสั่ง if และ else ในการทำความเข้าใจรายการ
number_list= [1, 2, 3, 4]another_list= [5, 6, 7, 8]
ผลลัพธ์= [จริง ถ้า (x + y)%2 == 0 อื่น เท็จ สำหรับNSในnumber_listสำหรับและในanother_list]
พิมพ์ (ผลลัพธ์)
ในขณะที่วนซ้ำสองรายการ ความเข้าใจของรายการด้านบนจะตรวจสอบว่าผลรวมของคู่ขององค์ประกอบเป็นคู่หรือไม่ การเรียกใช้โค้ดด้านบนจะแสดงให้คุณเห็น [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] เป็นเอาต์พุต หากไม่ใช้การทำความเข้าใจรายการ โค้ดจะมีลักษณะดังนี้:
number_list= [1, 2, 3, 4]another_list= [5, 6, 7, 8]
ผลลัพธ์= []
สำหรับNSในnumber_list:
สำหรับและในanother_list:
ถ้า (x + y)%2 == 0:
ผลลัพธ์.ผนวก(จริง)
อื่น:
ผลลัพธ์.ผนวก(เท็จ)
พิมพ์ (ผลลัพธ์)
บทสรุป
List comprehensions เป็นวิธีที่ดีในการเขียนคำสั่ง loop ที่ชัดเจนและกระชับ อย่างไรก็ตาม อาจซับซ้อนและเข้าใจยากได้อย่างรวดเร็วหากใช้หลายลูปและคำสั่งแบบมีเงื่อนไข ในท้ายที่สุด มันมาถึงระดับความสะดวกสบายของโปรแกรมเมอร์ แต่โดยทั่วไป จะเป็นความคิดที่ดีที่จะเขียนโค้ดที่ชัดเจน อ่านได้ และดีบักได้ง่าย แทนที่จะใช้การจดชวเลขมากเกินไป