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

Python Zip: คู่มือใช้งาน zip() ทีละขั้นตอน

ฟังก์ชัน Python zip() รับ iterable items และรวมเข้าด้วยกันเป็น single tuple ค่าที่ได้คือ zip object ที่เก็บ pairs ของ iterables คุณสามารถส่ง lists, tuples, sets, หรือ dictionaries ผ่าน zip() ได้


Python มี built-in functions หลายตัวช่วยให้นักเขียนโค้ดวนลูปผ่านข้อมูล ฟังก์ชันหนึ่งคือ Python zip ฟังก์ชัน zip() สร้าง iterator ที่จะรวม elements จากแหล่งข้อมูลสองขึ้นไปเป็นหนึ่งเดียว

ในบทช่วยสอนนี้ เราจะแยกวิเคราะห์พื้นฐานของ Python zip() พร้อมอภิปรายการวนลูปผ่าน zip และการ unzip ค่าที่ zip แล้ว

Python Iteration Refresher (การวนลูปใน Python)

ใน Python เราใช้คำว่า iterate เพื่ออธิบายเมื่อโปรแกรมกำลังวิ่งผ่าน list ตัวอย่างเช่น มี for loop พิมพ์ชื่อสาขาทุกสาขาของบริษัท เราจะบอกว่าโปรแกรมกำลัง iterate ผ่าน list ของชื่อ

Iterable คือ object ที่สามารถคืนค่าสมาชิกแต่ละตัวได้เป็นรายตัว Arrays เป็น iterables เพราะคุณสามารถพิมพ์แต่ละ item แยกกันได้ด้วย for loop

Python zip Function

ฟังก์ชัน zip() รวมเนื้อหาของ iterables สองขึ้นไป zip() คืนค่า zip object ซึ่งเป็น iterator ของ tuples ที่เก็บค่าทั้งหมดที่ส่งเป็น arguments มาเป็น pairs

Python zip() function รับ iterable เช่น list, tuple, set, หรือ dictionary เป็น argument ฟังก์ชันจะสร้าง list ของ tuples ที่มี elements จากแต่ละ iterable ที่ส่งเข้าไป

Syntax ของ zip() function:

zip(iterable1, iterable2, ...)

คุณสามารถใส่ iterables ได้ไม่จำกัด ต้องระบุ iterables ที่ต้องการรวมเป็น arguments ของ zip()

zip() method ทำงานจนกว่า iterable objects จะ zip หมดแล้ว เกิดขึ้นเมื่อ iterables หมดลง กล่าวคือ zip() หยุดเมื่อสร้าง pairs ทั้งหมดที่เป็นไปได้แล้ว

zip Python Example

สมมติคุณมี 2 Python lists หนึ่งเก็บชื่อพนักงาน อีกหนึ่งเก็บเลขพนักงาน คุณต้องการรวมทั้งสอง list เป็น array ของ tuples เพื่อเก็บชื่อและเลขพนักงานคู่กัน

เราสามารถใช้ zip() function รวมสอง lists นี้ ตัวอย่างโปรแกรม:

employee_numbers = [2, 9, 18, 28]
employee_names = ["Candice", "Ava", "Andrew", "Lucas"]
zipped_values = zip(employee_names, employee_numbers)
zipped_list = list(zipped_values)
print(zipped_list)

zip function คืนค่า:

[('Candice', 2), ('Ava', 9), ('Andrew', 18), ('Lucas', 28)]

โปรแกรมสร้าง array ของ tuple items แต่ละ tuple มีชื่อพนักงานและเลขพนักงานที่สอดคล้อง

บรรทัดแรกและสองของโค้ด เรา宣告ตัวแปรเก็บเลขพนักงานและชื่อพนักงาน

ต่อมา เราทำ zip() function ฟังก์ชันนี้รวมสอง lists และสร้าง array ของ tuples ใหม่

เราแปลง zip item เป็น list เพราะ zip() คืนค่า zip object เราสามารถ iterate over zip object ได้ แต่ไม่สามารถพิมพ์ zip object ออกมา console แล้วดูเนื้อหาในรูปแบบอ่านง่ายได้ ต้องแปลง zip object เป็น list ก่อน

เราสามารถตรวจสอบว่า zipped_values เป็น zip() item ได้โดยเพิ่มโค้ด:

print(type(zipped_values))

โค้ดคืนค่า zip class:

ในตัวอย่างข้างต้น เรา zip สอง items แต่หากมีมากกว่านั้นก็ทำได้ เพียงเพิ่ม list อีกเข้าไปใน zip() function

Looping Over Iterables Using zip in Python

zip() function คืนค่า iterator หมายถึงเราสามารถดูเนื้อหาของแต่ละ zipped item แยกกันได้

การทำงานกับ multiple iterables เป็น use case ยอดนิยมของ zip() function ใน Python ตัวอย่างเช่น หากต้องการวนลูปผ่านหลาย lists อาจต้องใช้ zip() function

ลองใช้ zip() function วนลูปผ่าน employee_numbers และ employee_names:

employee_numbers = [2, 9, 18, 28]
employee_names = ["Candice", "Ava", "Andrew", "Lucas"]
for name, number in zip(employee_names, employee_numbers):
    print(name, number)

โค้ดคืนค่า:

Candice 2
Ava 9
Andrew 18
Lucas 28

โปรแกรม iterate ผ่าน list ของ tuples ที่ zip() คืนค่า และแยกเป็นสองค่า: name และ number

นี่ทำให้เรา iterate ผ่าน multiple iterable objects พร้อมกันได้ง่าย ตอนนี้เราดูชื่อพนักงานคู่กับเลขพนักงานได้ หากต้องการ สามารถ iterate ผ่านสามหรือมากกว่านั้น iterable objects ได้

Unzip Values in Python (แยกค่าที่ Zip ไว้)

ในโค้ดเรา zip ข้อมูลหลายประเภท แต่ كيفคืนค่าข้อมูลกลับสู่รูปแบบเดิม? หากคุณมี list of tuples หรือ zipped values ที่ต้องการแยก สามารถใช้ unpacking operator ของ zip() function นั่นคือ asterisk * ใช้ร่วมกับ zip() function

ตัวอย่าง zip() unpacking operator:

employees_zipped = [('Candice', 2), ('Ava', 9), ('Andrew', 18), ('Lucas', 28)]
employee_names, employee_numbers = zip(*employees_zipped)
print(employee_names)
print(employee_numbers)

โค้ดคืนค่า:

('Candice', 'Ava', 'Andrew', 'Lucas')
(2, 9, 18, 28)

บรรทัดแรก เรา宣告ตัวแปรที่มี list of tuples บรรทัดถัดไป เรา宣告สองตัวแปร คือ employee_names และ employee_numbers เรากำหนดค่าให้ตัวแปรเหล่านี้จาก unzip function

Unzip function คือ zip function ที่รับ employees_zipped variable แล้ว unpack zip ด้วย unpacking operator * ในตัวอย่าง เราพิมพ์สองตัวแปรใหม่ที่มีชื่อและเลขพนักงาน

สรุป

ฟังก์ชัน zip() รับ iterable objects เป็น input และรวมเป็น zip() object zip() object นี้แสดงค่าจากแต่ละ iterable input คู่กันแบบ side-by-side นี่มีประโยชน์หากคุณมี arrays หรือ tuples สองขึ้นไปที่ต้องการรวมเป็นหนึ่งเดียว

เราได้อภิปรายการใช้ zip() function กับ zero หรือ one input คุณสามารถใช้ zip() เพื่อวนลูปผ่าน iterables และ unzip ข้อมูลที่ zip ไว้แล้ว คุณอยู่บนเส้นทางสู่การเป็น master ของ Python zip() function

อ่าน How to Code in Python guide สำหรับเคล็ดลับและคำแนะนำเพิ่มเติมเกี่ยวกับภาษา Python