ในบทความนี้ เราจะเรียนรู้การนำไปใช้งานและการใช้งานของฟังก์ชัน issubset() ที่มีใน Python Standard Library
เมธอด issubset() จะคืนค่า Boolean True เมื่อองค์ประกอบทั้งหมดของเซตหนึ่งอยู่ในอีกเซตหนึ่ง (ที่ส่งผ่านเป็นอาร์กิวเมนต์) มิฉะนั้น จะคืนค่า Boolean False
ในภาพที่กำหนดด้านล่าง B เป็นเซตย่อย (subset) ของ A ในกรณีที่ A และ B เป็นเซตเหมือนกัน หมายความว่า A เป็น proper subset ของ B นั่นหมายถึงทั้งสองเซตมีองค์ประกอบเหมือนกัน

Syntax
<set 1>.issubset(<set 2>)
ค่าที่คืน
Boolean True/False
ตอนนี้มาดูภาพประกอบเพื่อเข้าใจแนวคิด
ตัวอย่าง
A = {'t', 'u', 't', 'o', 'r', 'i', 'a', 'l'}
B = {'t', 'u', 't'}
C = {'p', 'o', 'i', 'n', 't'}
print(B.issubset(A))
print(B.issubset(C))
A = set(str(A) + str(C))
print(C.issubset(A))
ผลลัพธ์
True False True
คำอธิบาย
ที่นี่มีการตรวจสอบว่าองค์ประกอบทั้งหมดของ B อยู่ใน A ซึ่งให้ผล True คล้ายกันสำหรับคำสั่งถัดไป
ตอนนี้เราต่อเซตทั้งสองเพื่อให้กลายเป็น subset โดยบังคับ โดยใช้ type casting ตามที่เห็นในคำสั่งถัดไป
ตอนนี้มาดูว่าเกิดอะไรขึ้นถ้าเราระบุ iterable อีกประเภทหนึ่งนอกจาก set และส่งเป็นอาร์กิวเมนต์
ตัวอย่าง
A = ['t', 'u', 't', 'o', 'r', 'i', 'a', 'l']
B = {'t', 'u', 't'}
C = ('p', 'o', 'i', 'n', 't')
D = {'p', 'o', 'i', 'n', 't'}
print(B.issubset(A))
print(B.issubset(C))
A = set(str(A) + str(C))
print(D.issubset(A))
ผลลัพธ์
True False True
คำอธิบาย
ที่นี่เราส่ง tuple, string และ list iterables ให้ฟังก์ชัน issubset() ประเภทเหล่านี้ถูกแปลงเป็น set type โดยอัตโนมัติ (implicitly) เพื่อให้ได้ผลลัพธ์ที่ต้องการ
เราต้องสังเกตด้วยว่าอาร์กิวเมนต์นอกฟังก์ชันต้องเป็น type <set> เสมอ เพื่อให้ interpreter รู้ว่าการเปรียบเทียบเป็นระหว่างสองเซต ไม่ใช่ประเภทอื่น
สรุป
ในบทความนี้ เราได้เรียนรู้วิธีใช้ issubset() ใน Python และว่ามีประเภทอาร์กิวเมนต์อะไรบ้างที่อนุญาตให้เปรียบเทียบด้วยฟังก์ชันนี้