ค้นหาเว็บไซต์

เรียนรู้โครงสร้างข้อมูลชุด Python/Frozenset - ตอนที่ 4


ใน ส่วนที่ 4 ของซีรีส์โครงสร้างข้อมูล Python นี้ เราจะมาคุยกันว่าชุดคืออะไร แตกต่างจากโครงสร้างข้อมูลอื่นใน Python อย่างไร วิธีสร้างวัตถุชุด ลบวัตถุชุด และวิธีการของวัตถุชุด .

  • วัตถุชุดคือคอลเลกชันที่ไม่เรียงลำดับของวัตถุที่สามารถแฮชได้ที่แตกต่างกัน
  • Set จะลบรายการที่ซ้ำกันออกจากวัตถุโดยอัตโนมัติ
  • เนื่องจากออบเจ็กต์ที่ตั้งค่าไม่มีการเรียงลำดับ จึงไม่รองรับการดำเนินการจัดทำดัชนีและการแบ่งส่วน

ปัจจุบันมีชุดบิวท์อินอยู่สองประเภท

  1. ชุด – เนื่องจากไม่แน่นอน จึงไม่มีค่าแฮชและไม่สามารถใช้เป็นคีย์พจนานุกรมหรือเป็นองค์ประกอบของชุดอื่นได้
  2. 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() เป็นต้น

สรุป

ในบทความนี้ คุณได้เห็นแล้วว่ามีอะไรตั้งค่าไว้บ้าง ความแตกต่างระหว่างเซ็ตและเซ็ตแช่แข็ง วิธีสร้างและเข้าถึงองค์ประกอบเซ็ต วิธีการตั้งค่า ฯลฯ...