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

การดำเนินการเซต (Set Operations) ใน Python

ในคณิตศาสตร์ เซตคือชุดของวัตถุที่แตกต่างกัน ถือเป็นวัตถุหนึ่งตัว เช่น ตัวเลข 2, 4, 6 แยกกันเป็นวัตถุต่างกัน แต่รวมกันเป็นเซตขนาดสาม เขียน {2,4,6}

การดำเนินการบนเซต

การดำเนินการ สัญลักษณ์ ความหมาย
Intersection ( 교집합 ) A ∩ B สมาชิกทั้งหมดที่อยู่ในทั้ง A และ B
Union ( 합집합 ) A ∪ B สมาชิกทั้งหมดที่อยู่ใน A หรือ B (หรือทั้งคู่)
Difference ( 차집합 ) A − B สมาชิกที่อยู่ใน A แต่ไม่อยู่ใน B
Complement ( 여집합 ) A' (หรือ A^c) สมาชิกทั้งหมดที่ไม่อยู่ใน A

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

เมธอดสำหรับเซต

add(x) Method: เพิ่มรายการ x เข้าเซตถ้ายังไม่มีอยู่

A = {"AA", "BB", "CC"}
A.add("VV")

จะเพิ่ม VV เข้าเซต A

union(s) Method: คืนยูเนียนของสองเซต ใช้ '|' ระหว่างสองเซตเหมือน My_Set1.union(My_Set2)

A = {"AA", "BB", "CC"}
B = {"MM", "NN"}
Z = A.union(B) หรือ Z = A|B

เซตผลลัพธ์จะมีสมาชิกของทั้ง A และ B

intersect(s) Method: คืน intersection ของสองเซต ใช้ '&' ได้

S = A.intersection(B)

เซตผลลัพธ์จะมีสมาชิกร่วมของ A และ B

difference(s) Method: คืนเซตที่มีสมาชิกอยู่ในเซตแรกแต่ไม่อยู่ในเซตที่สอง ใช้ '-' ได้

W = A.difference(B) หรือ S = A - B

เซตผลลัพธ์จะมีสมาชิกที่อยู่ใน A แต่ไม่อยู่ใน B

clear() Method: ล้างเซตทั้งหมดให้ว่าง

B.clear()

ล้างเซต B

ตัวดำเนินการสำหรับเซต

เซตและ frozenset รองรับตัวดำเนินการต่อไปนี้ -

key in s        # ตรวจสอบสมาชิก
key not in s    # ตรวจสอบไม่ใช่สมาชิก
s1 == s2        # s1 เทียบเท่า s2
s1 != s2        # s1 ไม่เทียบเท่า s2
s1 <= s2        # s1 เป็น subset ของ s2
s1 < s2         # s1 เป็น proper subset ของ s2
s1 >= s2        # s1 เป็น superset ของ s2
s1 > s2         # s1 เป็น proper superset ของ s2
s1 | s2         # ยูเนียนของ s1 และ s2
s1 & s2         # intersection ของ s1 และ s2
s1 - s2         # สมาชิกใน s1 แต่ไม่ใน s2
s1 ^ s2         # สมาชิกใน s1 หรือ s2 เพียงอย่างใดอย่างหนึ่ง

โค้ดตัวอย่าง

# โปรแกรม Python สาธิตการทำงานของเซต
# สร้างเซตสองเซต
My_Set1 = set()
My_Set2 = set()

# เพิ่มสมาชิกใน My_Set1
for i in range(1, 6):
    My_Set1.add(i)

# เพิ่มสมาชิกใน My_Set2
for i in range(3, 8):
    My_Set2.add(i)

print("My_Set1 = ", My_Set1)
print("My_Set2 = ", My_Set2)
print("\n")

# ยูเนียนของ My_Set1 และ My_Set2
My_Set3 = My_Set1 | My_Set2  # My_Set1.union(My_Set2)
print("ยูเนียนของ My_Set1&My_Set2: My_Set3 = ", My_Set3)

# Intersection ของ My_Set1 และ My_Set2
My_Set4 = My_Set1 & My_Set2  # My_Set1.intersection(My_Set2)
print("Intersection ของ My_Set1&My_Set2: My_Set4 = ", My_Set4)
print("\n")

# ตรวจสอบความสัมพันธ์ระหว่าง My_Set3 และ My_Set4
if My_Set3 > My_Set4:  # My_Set3.issuperset(My_Set4)
    print("My_Set3 เป็น superset ของ My_Set4")
elif My_Set3 < My_Set4:  # My_Set3.issubset(My_Set4)
    print("My_Set3 เป็น subset ของ My_Set4")
else:  # My_Set3 == My_Set4
    print("My_Set3 เหมือน My_Set4")

# แสดงความสัมพันธ์ระหว่าง My_Set4 และ My_Set3
if My_Set4 < My_Set3:  # My_Set4.issubset(My_Set3)
    print("My_Set4 เป็น subset ของ My_Set3")
print("\n")

# ความต่างระหว่าง My_Set3 และ My_Set4
My_Set5 = My_Set3 - My_Set4
print("สมาชิกใน My_Set3 แต่ไม่อยู่ใน My_Set4: My_Set5 = ", My_Set5)
print("\n")

# ตรวจสอบว่า My_Set4 และ My_Set5 เป็น disjoint sets หรือไม่
if My_Set4.isdisjoint(My_Set5):
    print("My_Set4 และ My_Set5 ไม่มีสมาชิกร่วมกัน\n")

# ล้างค่าทั้งหมดของ My_Set5
My_Set5.clear()
print("หลังใช้ clear บนเซต My_Set5: ")
print("My_Set5 = ", My_Set5)

ผลลัพธ์

My_Set1 = {1, 2, 3, 4, 5}
My_Set2 = {3, 4, 5, 6, 7}
ยูเนียนของ My_Set1&My_Set2: My_Set3 = {1, 2, 3, 4, 5, 6, 7}
Intersection ของ My_Set1&My_Set2: My_Set4 = {3, 4, 5}
My_Set3 เป็น superset ของ My_Set4
My_Set4 เป็น subset ของ My_Set3
สมาชิกใน My_Set3 แต่ไม่อยู่ใน My_Set4: My_Set5 = {1, 2, 6, 7}
My_Set4 และ My_Set5 ไม่มีสมาชิกร่วมกัน
หลังใช้ clear บนเซต My_Set5:
My_Set5 = set()