เรียนรู้โครงสร้างข้อมูลชุด Python/Frozenset - ตอนที่ 4
ใน ส่วนที่ 4 ของซีรีส์โครงสร้างข้อมูล Python นี้ เราจะมาคุยกันว่าชุดคืออะไร แตกต่างจากโครงสร้างข้อมูลอื่นใน Python อย่างไร วิธีสร้างวัตถุชุด ลบวัตถุชุด และวิธีการของวัตถุชุด .
- วัตถุชุดคือคอลเลกชันที่ไม่เรียงลำดับของวัตถุที่สามารถแฮชได้ที่แตกต่างกัน
- Set จะลบรายการที่ซ้ำกันออกจากวัตถุโดยอัตโนมัติ
- เนื่องจากออบเจ็กต์ที่ตั้งค่าไม่มีการเรียงลำดับ จึงไม่รองรับการดำเนินการจัดทำดัชนีและการแบ่งส่วน
ปัจจุบันมีชุดบิวท์อินอยู่สองประเภท
- ชุด – เนื่องจากไม่แน่นอน จึงไม่มีค่าแฮชและไม่สามารถใช้เป็นคีย์พจนานุกรมหรือเป็นองค์ประกอบของชุดอื่นได้
- frozenset – ไม่เปลี่ยนรูปและแฮชได้ – เนื้อหาไม่สามารถเปลี่ยนแปลงได้หลังจากสร้างขึ้นแล้ว ดังนั้นจึงสามารถใช้เป็นคีย์พจนานุกรมหรือเป็นองค์ประกอบของชุดอื่นได้
สร้างวัตถุชุด
สร้างชุดโดยใช้วิธีคอนสตรัคเตอร์ “set()” หรือใช้เครื่องหมายปีกกาที่มีเครื่องหมายจุลภาคคั่นองค์ประกอบ “{a,b,c}”
หมายเหตุ: คุณไม่สามารถสร้างวัตถุที่ตั้งค่าด้วยเครื่องหมายปีกกาว่างได้ เนื่องจากจะสร้างวัตถุพจนานุกรม
ตั้งค่าวิธีการ
ใช้ฟังก์ชัน “dir()” ในตัวเพื่อแสดงรายการวิธีการและแอตทริบิวต์ที่ตั้งค่าไว้
เพิ่มองค์ประกอบเพื่อตั้งค่าวัตถุ
ตามที่ระบุไว้แล้ว set เป็นประเภทที่ไม่แน่นอน คุณสามารถเพิ่ม ลบ อัปเดตออบเจ็กต์ชุดของคุณได้เมื่อสร้างแล้ว
ให้เราพูดถึงสองวิธีที่ตั้งค่าไว้คือ เพิ่ม และ อัปเดต
- วิธีเพิ่ม (elem) – วิธีการนี้จะเพิ่มองค์ประกอบเดียวให้กับวัตถุชุด
- วิธีการอัปเดต(*อื่นๆ) – วิธีการนี้จะเพิ่มองค์ประกอบหลายรายการให้กับวัตถุที่ตั้งไว้ คุณสามารถส่งวัตถุที่ไม่แน่นอน/ไม่เปลี่ยนรูปเป็นอาร์กิวเมนต์ในวิธีการอัปเดตได้
หมายเหตุ: รายการซ้ำจะถูกลบออกโดยอัตโนมัติ
ลบ/ล้างองค์ประกอบจากวัตถุชุด
ดังที่คุณเห็นก่อนหน้านี้ในหัวข้อโครงสร้างข้อมูลอื่นๆ (รายการ สิ่งอันดับ พจนานุกรม) สำหรับชุดคุณสามารถใช้คำหลักในตัว “del” เพื่อลบวัตถุชุดออกจากเนมสเปซ (เช่น หน่วยความจำ)
ด้านล่างนี้เป็นวิธีการสำหรับการตั้งค่าวัตถุเพื่อลบองค์ประกอบ
- clear() – จะล้างองค์ประกอบทั้งหมดที่ทำให้ชุดว่างเปล่า วิธีการ clear() นี้มีอยู่ในโครงสร้างข้อมูลอื่นที่มีฟังก์ชันการทำงานเดียวกัน
- pop() – ลบองค์ประกอบที่กำหนดเอง
- ทิ้ง(elem) – หากไม่พบรายการในวัตถุที่ตั้งค่าไว้ วิธีการ “discard()” จะไม่ทำให้เกิดข้อผิดพลาดใด ๆ
- remove(elem) – เหมือนกับวิธี “discard()” แต่จะเพิ่ม KeyError เมื่อไม่พบรายการ
ตั้งค่าการดำเนินการ
เซตให้วิธีการดำเนินการทางคณิตศาสตร์ เช่น อินเตอร์เซกชัน ยูเนี่ยน ผลต่าง และผลต่างสมมาตร จำ “แผนภาพเวนน์” จากสมัยเรียนมัธยมปลายได้ไหม
เราจะดูวิธีการด้านล่างเกี่ยวกับวิธีการดำเนินการทางคณิตศาสตร์
- สหภาพแรงงาน
- จุดตัด
- ทางแยก_อัพเดต
- สมมาตร_ความแตกต่าง
- สมมาตร_ความแตกต่าง_อัปเดต
- ความแตกต่าง
- ความแตกต่าง_อัปเดต
- ไม่ต่อเนื่องกัน
- เป็นเซตย่อย
- คือซุปเปอร์เซ็ต
Union, Intersectio, ความแตกต่าง, Symmetric_Difference
- union(*other) – ส่งคืนชุดใหม่ที่มีองค์ประกอบจากชุดและอื่นๆ ทั้งหมด
- intersection(*other) – ส่งกลับชุดใหม่ที่มีองค์ประกอบเหมือนกันกับชุดและอื่นๆ ทั้งหมด
- difference(*others) – ส่งคืนชุดใหม่ที่มีองค์ประกอบในชุดที่ไม่ได้อยู่ในชุดอื่น
- symmetric_difference(other) – ส่งคืนชุดใหม่ที่มีองค์ประกอบอยู่ในชุดหรือชุดอื่น แต่ไม่ใช่ทั้งสองอย่าง
ทางแยก_อัปเดต
intersection_update(*others) – อัปเดตชุด โดยเก็บเฉพาะองค์ประกอบที่พบในชุดนั้นและองค์ประกอบอื่นๆ ทั้งหมด
อัพเดตความแตกต่าง
difference_update(*others) – อัปเดตชุด โดยเก็บเฉพาะองค์ประกอบที่พบในชุดนั้นและองค์ประกอบอื่นๆ ทั้งหมด
Symmetric_Difference_Update
symmetric_difference_update(other) – อัปเดตชุด โดยเก็บเฉพาะองค์ประกอบที่พบในชุดใดชุดหนึ่ง แต่ไม่ใช่ในทั้งสองชุด
Isdisjoint, Issubset, Issuperset
- isdisjoint(other) – คืนค่า True หากชุดไม่มีองค์ประกอบที่เหมือนกันกับองค์ประกอบอื่น เซตจะแยกจากกันก็ต่อเมื่อจุดตัดของเซตนั้นเป็นเซตว่างเท่านั้น
- issubset() – ทดสอบว่าทุกองค์ประกอบในชุด อยู่ใน อีกองค์ประกอบหนึ่งหรือไม่
- issuperset() – ทดสอบว่าทุกองค์ประกอบในอีกองค์ประกอบหนึ่งอยู่ในชุดหรือไม่
วิธีการคัดลอก()
คุณสามารถสร้างสำเนาที่เหมือนกันของชุดอ็อบเจ็กต์ที่มีอยู่โดยใช้วิธี copy() วิธีนี้ยังใช้ได้กับโครงสร้างข้อมูลประเภทอื่นๆ เช่น รายการ พจนานุกรม ฯลฯ...
ลบวัตถุที่ตั้งค่าออกจากเนมสเปซโดยใช้คีย์เวิร์ด “del” ในตัว
ชุดแช่แข็ง
- ชุดแช่แข็งเป็นประเภทไม่เปลี่ยนรูป เมื่อสร้างแล้ว คุณจะไม่สามารถเพิ่ม ลบ หรืออัปเดตองค์ประกอบออกจากรายการได้
- ชุด Frozen ที่ไม่เปลี่ยนรูปสามารถแฮชได้ โดยสามารถใช้เป็น “คีย์” สำหรับพจนานุกรมหรือองค์ประกอบสำหรับอ็อบเจ็กต์ชุดอื่น
- ชุด Frozen สร้างขึ้นโดยใช้ฟังก์ชัน “frozenset()”
- Frozen set มีชุดวิธีการเดียวกันเมื่อเปรียบเทียบกับ “set” เช่น union(), intersection, copy(), isdisjoint() เป็นต้น
สรุป
ในบทความนี้ คุณได้เห็นแล้วว่ามีอะไรตั้งค่าไว้บ้าง ความแตกต่างระหว่างเซ็ตและเซ็ตแช่แข็ง วิธีสร้างและเข้าถึงองค์ประกอบเซ็ต วิธีการตั้งค่า ฯลฯ...