Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python List Comprehension:A How-To Guide

การทำความเข้าใจรายการ Python เป็นวิธีการสร้างรายการตามรายการที่มีอยู่ ความเข้าใจในรายการมักใช้เพื่อกรองรายการออกจากรายการหรือเพื่อเปลี่ยนค่าในรายการที่มีอยู่ ความเข้าใจรายการอยู่ในวงเล็บเหลี่ยม

เมื่อคุณทำงานกับรายการ คุณอาจต้องการสร้างรายการโดยยึดตามเนื้อหาของลำดับที่มีอยู่ ตัวอย่างเช่น คุณอาจต้องการสร้างรายการตามลำดับอักขระ หรือคุณอาจต้องการรายการที่คูณเนื้อหาของอีกรายการหนึ่งด้วยสอง

นั่นคือที่มาของความเข้าใจในรายการ บทช่วยสอนนี้จะสำรวจพร้อมตัวอย่าง พื้นฐานของรายการ Python และวิธีใช้ความเข้าใจในรายการ

รายการ Python:ทบทวน

โครงสร้างข้อมูลรายการช่วยให้คุณสามารถจัดเก็บคอลเลกชันของรายการใน Python รายการมักใช้เมื่อคุณต้องการทำงานกับค่าหลายค่าที่เกี่ยวข้องกันในทางใดทางหนึ่ง

ตัวอย่างเช่น คุณสามารถใช้รายการเพื่อจัดเก็บรสชาติของไอศกรีมทั้งหมดที่ขายในร้านไอศกรีม หรือคุณสามารถใช้รายการเพื่อเก็บรายชื่อหมายเลขโทรศัพท์ของสมาชิกที่ชมรมไวน์

นี่คือตัวอย่างรายการในภาษา Python:

pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken']

ตอนนี้เราได้แก้ไขพื้นฐานของรายการแล้ว เรามาเริ่มพูดถึงวิธีใช้ความเข้าใจในรายการได้

ความเข้าใจรายการ Python

ความเข้าใจรายการ Python สร้างรายการใหม่จากเนื้อหาของรายการอื่น คุณสามารถใช้ความเข้าใจรายการเพื่อทำซ้ำรายการหรือแก้ไขเนื้อหาของรายการที่มีอยู่ลงในรายการใหม่ หรือคุณสามารถถ่ายโอนเนื้อหาของ iterable อื่นไปยังรายการที่มีความเข้าใจรายการ

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

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

ไวยากรณ์สำหรับความเข้าใจรายการใน Python มีดังต่อไปนี้:

[expression for item in list]

ไวยากรณ์นี้คล้ายกับ Python for คำแถลง. แต่คำสั่งอยู่ในบรรทัดเดียว หากต้องการแยกความแตกต่างระหว่างคำสั่ง for ความเข้าใจรายการจะอยู่ในวงเล็บเหลี่ยม

ไวยากรณ์ด้านบนมีสามส่วน:

  • การแสดงออก :ค่าสิ้นสุดที่เข้าสู่รายการใหม่
  • รายการ :แต่ละรายการในรายการที่คุณทำซ้ำ
  • รายการ :รายการหรืออ็อบเจ็กต์ที่ทำซ้ำได้ซึ่งรายการเข้าใจผ่าน (ประเภทข้อมูลที่ยอมรับได้ ได้แก่ ทูเพิล สตริง และรายการ)

คุณสามารถใช้รายการความเข้าใจกับ Python if...else คำสั่งภายใน:

[expression for item in list if condition else none]

ความเข้าใจนี้จะเพิ่มรายการลงในรายการก็ต่อเมื่อตรงตามเงื่อนไขที่ระบุเท่านั้น

การใช้การทำความเข้าใจรายการช่วยให้คุณสร้างรายการใหม่จากรายการที่มีอยู่โดยไม่ต้องกำหนด สำหรับ แบบเต็ม งบ. สำหรับ คำสั่งใช้โค้ดอย่างน้อยสองบรรทัด ในขณะที่คุณสามารถเขียนรายการความเข้าใจในบรรทัดเดียวได้

บางคนบอกว่าการเข้าใจรายการเป็นโค้ด Pythonic มากกว่า เนื่องจากมีประสิทธิภาพมากกว่าการใช้ for แบบสั้น คำสั่ง

ตัวอย่างความเข้าใจรายการ Python

สมมติว่าเราต้องการสร้างรายชื่อพิซซ่าไก่ทั้งหมดที่เราขายในร้านของเรา เราจะย้ายพิซซ่าไก่ทั้งหมดไปเป็น ไก่ หมวดหมู่ในเมนูของเรา ในการทำเช่นนั้น เราสามารถกรองพิซซ่าของเราโดยใช้ for งบ. หรือเราอาจกรองรายการโดยใช้ความเข้าใจรายการ

เราสามารถใช้ list comprehension เพื่อสร้างรายชื่อพิซซ่าใหม่ที่มีชื่อ Chicken ตามรายการพิซซ่าที่มีอยู่ของเรา เราสามารถทำได้โดยใช้รหัสนี้:

pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken']

chicken_pizzas = [p for p in pizzas if "Chicken" in p]
print(chicken_pizzas)

ความเข้าใจของเราส่งคืนรายการผลลัพธ์ต่อไปนี้:

[‘Chicken’, ‘Chicken and Bacon’, ‘BBQ Chicken’]

ในโค้ดของเรา ขั้นแรกเราจะกำหนดรายการพิซซ่าในเมนูของเรา พิซซ่าของเราถูกเก็บไว้ในตัวแปร Python ที่เรียกว่า pizzas . จากนั้น เราใช้การทำความเข้าใจรายการเพื่อสร้างรายการพิซซ่าใหม่ที่มีชื่อ ไก่

ความเข้าใจรายการของเราประกอบด้วยส่วนต่างๆ ดังต่อไปนี้:

  • p :นี่คือค่าที่จะเพิ่มลงในรายการของเรา
  • สำหรับ p ในพิซซ่า :สิ่งนี้จะวนซ้ำผ่านพิซซ่าทุกรายการในรายการ "พิซซ่า" ของเรา
  • ถ้า “ไก่” ใน p :ตรวจสอบเพื่อดูว่าแต่ละพิซซ่ามี “ไก่” หรือไม่ หากประเมินเป็น True ค่าที่เก็บไว้ใน “p” จะถูกเพิ่มลงในรายการของเรา

ความเข้าใจรายการของเราใช้โค้ดเพียงบรรทัดเดียว ในตัวอย่างต่อไป เราจำเป็นต้องใช้โค้ดสามบรรทัดที่มี for คำสั่งเพื่อให้มันทำงาน ตัวอย่างต่อไปของเราแสดงขอบเขตที่ความเข้าใจรายการช่วยให้คุณเขียนโค้ดที่สะอาดขึ้น

ไม่มีความเข้าใจในรายการ

กลับมาที่ตัวอย่างพิซซ่าไก่กัน โดยไม่ใช้การทำความเข้าใจรายการ หากเราต้องการสร้างรายการพิซซ่าไก่ในเมนูของเรา เราจะใช้รหัสนี้:

pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken']
chicken_pizzas = []

for pizza in pizzas:
	if "Chicken" in pizza:
		chicken_pizzas.append(pizza)

print(chicken_pizzas)

รหัสของเราส่งคืน:

[‘Chicken’, ‘Chicken and Bacon’, ‘BBQ Chicken’]

อันดับแรก เรากำหนดสองรายการ รายการเดียวเก็บรายการพิซซ่าที่ขายในร้านของเรา รายชื่ออื่นเก็บรายชื่อพิซซ่าไก่ทั้งหมดที่เราขาย รายชื่อพิซซ่าไก่ที่เราขายว่างเปล่า

เราใช้คำสั่ง "for" เพื่ออ่านพิซซ่าแต่ละชิ้นในรายการพิซซ่าของเรา จากนั้นเราตรวจสอบดูว่าพิซซ่าแต่ละอันมีคำว่า ไก่ . หรือไม่ ถ้าพิซซ่ามีคำว่า ไก่ เราเพิ่มพิซซ่านั้นในรายการพิซซ่าไก่ของเรา ในกรณีนี้ พิซซ่า 3 ถาดจะประกอบด้วย ไก่ และพิซซ่าทั้งสามนี้ถูกเพิ่มใน chicken_pizzas . ของเรา รายการ

อย่างที่คุณเห็น เพื่อตรวจสอบว่าพิซซ่ามี ไก่ และเพื่อเพิ่มลงในรายการของเรา เราใช้โค้ดสามบรรทัด มีวิธีการที่มีประสิทธิภาพมากขึ้นในการเขียนโค้ดนี้:โดยใช้การทำความเข้าใจรายการ

แสดงรายการความเข้าใจโดยใช้ if...else

คุณยังสามารถใช้ if...else คำสั่งที่มีความเข้าใจรายการ

ก่อนหน้านี้ เราใช้ if คำสั่งเพิ่มพิซซ่าในรายการพิซซ่าไก่ของเรา เราเพิ่มพิซซ่าก็ต่อเมื่อชื่อพิซซ่ามีคำว่า ไก่ . แต่สมมติว่าเรากำลังทำรายการพิซซ่าที่เป็นมังสวิรัติ

เราต้องการเพิ่ม “เนื้อ” ในรายการหากชื่อพิซซ่ามี ไก่ และ มังสวิรัติ ถ้าชื่อพิซซ่าไม่มี ไก่ .

สามารถทำได้โดยใช้การทำความเข้าใจรายการ:

pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken']

is_veggie = ["Meat" if "Chicken" in p else "Vegetarian" for p in pizzas]

print(is_veggie)

รหัสของเราส่งคืน:

[‘Meat’, ‘Vegetarian’, ‘Meat’, ‘Vegetarian’, ‘Vegetarian’, ‘Meat’]

มาทำลายรหัสของเรากัน ขั้นแรก เราประกาศรายชื่อพิซซ่าที่เรียกว่า พิซซ่า . จากนั้น เราใช้การทำความเข้าใจรายการเพื่อประเมินว่าชื่อพิซซ่ามี ไก่ หรือเปล่า

หากชื่อพิซซ่ามี ไก่ , ค่า เนื้อ ถูกเพิ่มใน is_veggie . ของเราแล้ว รายการ. มิฉะนั้นค่า มังสวิรัติ ถูกเพิ่ม

อย่างที่คุณเห็น ค่าแรกใน is_veggie . ของเรา รายการคือ เนื้อ เนื่องจากมีค่าที่สอดคล้องกันใน พิซซ่า รายการคือ ไก่ . แต่ค่าต่อไปของเราคือ มังสวิรัติ เนื่องจากมีค่าที่สอดคล้องกันใน พิซซ่า รายการคือ Margherita ซึ่งไม่มี ไก่ .



บทสรุป

ความเข้าใจรายการช่วยให้คุณสร้างรายการใหม่ตามรายการที่มีอยู่ เมื่อใช้การทำความเข้าใจรายการ คุณสามารถสร้างสำเนาของรายการ หรือสร้างรายการใหม่ที่กรองค่าออกจากรายการเก่า

บทช่วยสอนนี้กล่าวถึงโดยอ้างอิงถึงตัวอย่าง พื้นฐานของรายการ Python และวิธีใช้เทคนิคทำความเข้าใจรายการเพื่อสร้างรายการใหม่

คุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเข้ารหัสใน Python หรือไม่? ดูคู่มือ How to Learn Python ของเรา คู่มือนี้ประกอบด้วยรายการของแหล่งข้อมูลการเรียนรู้ที่จะช่วยให้คุณเดินทางต่อสู่การเรียนรู้ Python อย่างเชี่ยวชาญ