Sets (เซ็ท)
Contents
Sets (เซ็ท)#
Set (เซ็ต) เป็นอออบเจกต์ที่ใช้เก็บข้อมูลที่ไม่ซ้ำกันรวมเป็นชุดข้อมูลชุดเดียวกัน เราสามารถใช้ Set หาค่าที่ไม่ซ้ำกันภายในลิสต์ ใช้ตรวจสอบข้อมูลที่มีอยู่แล้ว หรือดำเนินการทางคณิตศาสตร์ที่เกี่ยวกับเซ็ท เช่น Intersection, Union, Difference และ Symmetric difference ได้
คุณอาจจะเคยเรียนเรื่องเซ็ท (Set) และทฤษฎีเซตในวิชาคณิตศาสต์กันมา และน่าจะคุนเคยกับแผนภาพของเวน (Venn Diagram) ประมาณนี้…
(src: https://texample.net//tikz/examples/set-operations-illustrated-with-venn-diagrams/)
แต่ถ้าจำไม่ได้หรือไม่คุ้นเลย ก็ไม่ต้องตกใจ ในบทนี้จะเรียนรู้ข้อมูลชนิด Sets (เซ็ท) ในภาษาไพธอนแบบเข้าใจง่ายๆ กัน
เราจะทำความรู้จักกับ Sets ว่าคืออะไร เรียนรู้วิธีการประกาศและการใช้งาน Sets เรียนรู้เมธอดที่ใช้ในการเพิ่มและลบข้อมูลของ Set รวมถึงวิธีดำเนินการทางคณิตศาสตร์ที่เกี่ยวข้องกับเซ็ตเบื้องต้น (Union, Intersection, Difference และ Symmetric difference)
Ref:
Set (เซ็ต) คือ?#
Set (เซ็ต) เป็นออบเจ็คที่สร้างขึ้นจากคลาส set
ใช้สำหรับเก็บข้อมูลที่ไม่ซ้ำกันรวมเป็นชุดข้อมูลชุดเดียวกัน ซึ่งข้อมูลภายเซ็ตจะไม่มีลำดับของข้อมูล
คุณสมบัติของ Set
องค์ประกอบหรือสมาชิกภายในเซ็ทจะไม่ซ้ำกัน (ซ้ำกันไม่ได้ ไม่อนุญาต)
ข้อมูลภายในเซ็ทจะไม่เรียงลำดับ (ทำให้การประมวลผลทำได้อย่างรวดเร็ว)
เป็นชนิดข้อมูลแบบเปลี่ยนแปลงได้ (Mutable Types) แต่สมาชิกที่อยู่ภายใน Set ต้องเป็นประเภทที่เปลี่ยนแปลงไม่ได้ (Immutable Types)
เราจะมาดูกันว่าคุณสมบัติข้างต้นนั้นหมายความว่าอย่างไร และเราจะใช้งาน Set ใน Python ได้อย่างไร
การประกาศและใช้งาน Set#
การสร้างเซ็ตของข้อมูล เราสามารถสร้าง Sets ได้ 2 วิธี คือ
การสร้างโดยใช้วงเล็บปีกกา (curly braces)
{...}
และการสร้างโดยใช้ฟังก์ชัน
set( )
1) การสร้างโดยใช้เครื่องหมาย {...}
โดยนำข้อมูลทั้งหมดใส่ภายในเครื่องหมายวงเล็บปีกกา {…} แล้วทำการคั่นแต่ละสมาชิกด้วยเครื่องหมายคอมมา (,) ซึ่งวิธีนี้เป็นวิธีที่ง่ายและใช้บ่อยที่สุด
# สร้าง list ด้วยวงเล็บสี่เหลียม []
[1,1,1,1,2,3,4,5,'rock', 'rock', 'pop']
[1, 1, 1, 1, 2, 3, 4, 5, 'rock', 'rock', 'pop']
# สร้าง set ด้วยวงเล็บปีกกา {}
{1,1,1,1,2,3,4,5,'rock', 'rock', 'pop'}
{1, 2, 3, 4, 5, 'pop', 'rock'}
# สร้างตัวแปรเก็บข้อมูล set
set1 = {"pop", "rock", "soul", "hard rock", "rock", "R&B", "rock", "disco"}
set1
{'R&B', 'disco', 'hard rock', 'pop', 'rock', 'soul'}
จากตัวอย่างข้างต้นเป็นการยืนยันว่า Set จะประกอบด้วยสมาชิกที่มีค่าไม่ซ้ำค่ากัน! ถ้าหากว่าข้อมูลที่ประกาศซ้ำกัน Python จะลบรายการที่ซ้ำกัน (ให้เหลือเพียงรายการเดียว) โดยอัตโนมัติ
องค์ประกอบหรือสมาชิกที่บรรจุอยู่ภายใน Set จะไม่จำกัดจำนวนและเก็บข้อมูลได้หลายชนิดภายในเซ็ตเดียวกันได้ ไม่ว่าจะเป็น เลขจำนวนเต็ม(integer), เลขทศนิยม(float), tuple, ข้อความ(string) ก็ตาม แต่…ไม่สามารถเก็บข้อมูลที่แก้ไขข้อมูล(mutable) เช่น ลิสต์ (list), เซ็ต(set) หรือ ดิกชันนารี(dictionary) ได้
ยกตัวอย่างเช่น เราสามารถสร้างตัวแปรที่ภายในเป็น tuple ซึ่งเป็นข้อมูลแบบ immutable ได้
set2 = {("pop", "pop rock", "teen pop"), ("rock", "hard rock", "electronic rock")} # ภายในเป็น immutable
set2
{('pop', 'pop rock', 'teen pop'), ('rock', 'hard rock', 'electronic rock')}
แต่ถ้าภายในเป็น list หรือ set ซึ่งเป็นข้อมูลแบบ mutable จะเกิดข้อผิดพลาด (TypeError: unhashable type: ‘list’ (‘set’)) เนื่องจาก สมาชิกที่อยู่ภายในเซ็ตต้องเป็น Hashtable object (ออบเจ็กต์ที่มีค่าแฮช (hash; ตรวจสอบโดยใช้ฟังก์ชัน hash()) และมีค่าเดิมไม่เปลี่ยนแปลงตลอดช่วงอายุของมัน (ค่า id ของออบเจ็กต์เป็นค่าเดิมเสมอ))
set3 = {["pop", "pop rock", "teen pop"], ["rock", "hard rock", "electronic rock"]} # ภายในเป็น mutable
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In [5], line 1
----> 1 set3 = {["pop", "pop rock", "teen pop"], ["rock", "hard rock", "electronic rock"]}
TypeError: unhashable type: 'list'
set4 = {{"pop", "pop rock", "teen pop"}, {"rock", "hard rock", "electronic rock"}} # ภายในเป็น mutable
กล่าวคือ สมาชิกที่อยู่ภายใน Set ต้องเป็นประเภทที่เปลี่ยนแปลงไม่ได้ (Immutable Types) เท่านั้น
2) การสร้างโดยใช้ฟังก์ชัน set( )
เราสามารถสร้างเซ็ตของข้อมูลโดยใช้ฟังก์ชัน set( )
x = set(<iterable>)
ณ ที่นี้ <iterable>
คือ ออบเจ็กต์ใดๆ ที่เราสามารถทำการวนซ้ำกับมันได้ ซึ่งรวมไปถึง lists, tuples, dictionaries, sets หรือแม้แต่ strings ก็ถือเป็น Iterable เช่นกัน
ตัวอย่างต่อไปนี้เป็นการสร้างเซ็ทจากลิสต์ที่มีข้อมูลหลายชนิดภายในลิสต์เดียวกัน
# เปลี่ยนข้อมูล List ให้เป็น Set
album_list = ["Michael Jackson", "Thriller", 1982, "00:42:19", \
"Pop, Rock, R&B", 46.0, 65, "30-Nov-82", None, 10.0]
album_set = set(album_list)
print(album_set)
{65, '00:42:19', None, 10.0, 46.0, 'Thriller', 'Pop, Rock, R&B', '30-Nov-82', 'Michael Jackson', 1982}
ลองสร้างชุดข้อมูล Set ของรูปแบบเพลงตามจังหวะ (genres) กัน
# เปลี่ยนข้อมูล List ให้เป็น Set
music_genres = set(["pop", "pop", "rock", "folk rock", "hard rock", "soul", \
"progressive rock", "soft rock", "R&B", "disco", "disco"])
print(music_genres)
# เปลี่ยนข้อมูล Set ให้เป็น Set
print(set(music_genres))
{'soul', 'soft rock', 'rock', 'folk rock', 'disco', 'pop', 'hard rock', 'R&B', 'progressive rock'}
{'soul', 'soft rock', 'rock', 'folk rock', 'disco', 'pop', 'hard rock', 'R&B', 'progressive rock'}
Note
ตัวอย่างข้างต้นแสดงให้เห็นว่า เราสามารถใช้ฟังก์ชัน set( ) หาค่าที่ไม่ซ้ำกันภายในลิสต์ได้ ! และข้อมูลภายในเซ็ตจะไม่มีลำดับของข้อมูล!
สตริงเป็นข้อมูล iterable สามารถวนซ้ำได้ ดังนั้นจึงสามารถส่งผ่านสตริงไปยังฟังก์ชัน set() ได้เช่นกัน
ตัวอย่างต่อไปนี้แสดงให้เห็นว่า ฟังก์ชัน list()
สร้างลิสต์ของอักขระทุกตัวที่อยู่ในสตริง (มีลำดับ) และในทำนองเดียวกัน ฟังก์ชัน set(s) สร้างเซ็ทของอักขระที่อยู่ในสตริง (ไม่มีลำดับ)
str_list = list("Practice makes perfect")
print(f"Size of {str_list}: {len(str_list)}")
Size of ['P', 'r', 'a', 'c', 't', 'i', 'c', 'e', ' ', 'm', 'a', 'k', 'e', 's', ' ', 'p', 'e', 'r', 'f', 'e', 'c', 't']: 22
str_set = set("Practice makes perfect")
print(f"Size of {str_set}: {len(str_set)}")
Size of {'p', 't', 'P', 'r', 'i', 's', 'k', 'f', 'e', 'c', ' ', 'm', 'a'}: 13
Note
เมื่อฟังก์ชัน set()
รับอาร์กิวเมนต์ที่เป็น iterable ฟังก์ชัน set()
จะสร้างเซ็ทขององค์ประกอบที่ประกอบเป็น iterable นั้นๆ ในขณะที่การวางออบเจ็กต์ในวงเล็บปีกการ {...}
จะสร้างเซ็ทของออบเจ็กต์ตัวเดิมนั้นๆ แม้ว่าออบเจ็กต์ตัวเดิมนั้นจะเป็น iterable ก็ตาม
>>> set(“Engineering”) # สร้างเซ็ทขององค์ประกอบที่ประกอบเป็น iterable (str)
{‘E’, ‘r’, ‘i’, ‘g’, ‘n’, ‘e’}
>>> {“Engineering”} # สร้างเซ็ทของออบเจ็กต์ตัวเดิมนั้นๆ (str)
{‘Engineering’}
>>> set([“Engineering”]) # สร้างเซ็ทขององค์ประกอบที่ประกอบเป็น iterable (list)
{‘Engineering’}
การดำเนินการพื้นฐานกับ Sets#
เนื่องจาก Sets เป็นข้อมูลแบบ Immutable เราสามารถเปลี่ยนแปลง/แก้ไข เช่น การเพิ่มหรือลบข้อมูล ภายใน Sets ได้
เราจะลองเขียนโค้ดเปลี่ยนขอมูลภายใน Set A
กัน
# ประกาศตัวแปร A
A = set(["Thriller", "Back in Black", "AC/DC"])
A
{'AC/DC', 'Back in Black', 'Thriller'}
เพิ่มข้อมูลเข้าไปในเซ็ตโดยใชัเมธอด add( )
# เพิ่มสมาชิกใหม่เข้าไปในเซ็ต
A.add("NSYNC")
A
{'AC/DC', 'Back in Black', 'NSYNC', 'Thriller'}
ถ้าเราเพิ่มข้อมูลที่มีอยู่แล้วในเซ็ต A เช่น เพิ่ม “NSYNC” เข้าไปอีกครั้ง ก็ไม่เกิดการเปลี่ยนแปลง เพราะข้อมูลในเซ็ตจะต้องไม่ซ้ำกัน!
# ลองเพิ่มสมาชิกใหม่ที่ซ้ำกับข้อมูลเดิมที่มีอยู่แล้ว
A.add("NSYNC")
A
{'AC/DC', 'Back in Black', 'NSYNC', 'Thriller'}
เพิ่มข้อมูลครั้งละหลายตัวเข้าไปในเซ็ตโดยใชัเมธอด update( )
ในการเพิ่มข้อมูลเข้าไปในเซ็ตนั้น นอกจากการเพิ่มข้อมูลเข้าไปทีละตัวด้วยเมธอด add( ) แล้ว เรายังสามารถเพิ่มข้อมูลครั้งละหลายตัวได้โดยใช้เมธอด update( )
โดยอาร์กิวเมนต์ที่ส่งให้กับเมธอดนี้ต้องเป็นออบเจกต์ iterable เช่น tuples, ลิสต์ (lists), ข้อความ (string) หรือ เซ็ต(set)
A.update({"NSYNC", "Bye Bye Bye"})
A
{'AC/DC', 'Back in Black', 'Bye Bye Bye', 'NSYNC', 'Thriller'}
และแน่นอน ข้อมูลใหม่จะไม่ซ้ำกับข้อมูลที่มีอยู่เดิม
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}
x.update(y)
print(x)
{'banana', 'microsoft', 'apple', 'google', 'cherry'}
การลบข้อมูลออกจากเซ็ตโดยใช้เมธอด remove( )
# ลบข้อมูลออกจากเซ็ต
A.remove("NSYNC")
A
{'AC/DC', 'Back in Black', 'Bye Bye Bye', 'Thriller'}
ลองรั้นโค้ดข้างต้นอีกที แล้วดูว่าจะเกิดอะไรขึ้น??
Error
หากข้อมูลที่จะลบไม่มีอยู่ในเซ็ต จะเกิดข้อผิดพลาดขึ้น เราจึงควรจะทราบข้อมูลที่ต้องการจะลบก่อนเรียกใช้เมธอด
remove( )
การลบข้อมูลออกจากเซ็ตมีอีกวิธี คือ การใช้เมธอด
discard( )
โดยเมธอดนี้จะไม่เกิดการเปลี่ยนแปลงใดๆ (ไม่เกิดข้อผิดพลาดขึ้น) หากข้อมูลที่ต้องการจะลบไม่มีอยู่ในเซ็ต
*เมธอด clear( )
ใช้ลบข้อมูลทั้งหมดออกจากเซ็ต
การตรวจสอบค่าใน Set ด้วยตัวดำเนินการ in
เราสามารถใช้ตัวดำเนินการ in
ตรวจสอบว่ามีค่าที่เราต้องการอยู่ในเซ็ตหรือไม่ โดยตัวดำเนินการ in
ส่งค่ากลับเป็น True
ถ้าหากค่าดังกล่าวมีอยู่ภายใน Set ไม่เช่นนั้นมันส่งค่ากลับเป็น False
# ตรวจสอบว่าอยู่ใน Set หรือไม่
"AC/DC" in A
True
ตัวดำเนินการ not in
จะตรงกันข้ามกับตัวดำเนินการ in
# ตรวจสอบว่าอยู่ใน Set หรือไม่
"AC/DC" not in A
False
ลบข้อมูลทั้งหมดออกจากเซ็ตโดยใช้เมธอด clear()
กลายเป็นเซ็ตว่าง (null Set / empty set) เมื่อเช็คจำนวนสมาชิก จะส่งค่ากลับเป็นศูนย์
# ลบข้อมูลทั้งหมดออกจากเซ็ต
A.clear()
print(A)
print(len(A))
set()
0
การดำเนินการทางคณิตศาสตร์ที่เกี่ยวกับ Sets#
เราสามารถดำเนินการทางคณิตศาสตร์กับข้อมูลแบบเซ็ตได้ เช่น การรวมข้อมูลกัน (Union (ยูเนียน)), การเลือกข้อมูลเฉพาะที่ซ้ำซ้อนกัน (Intersection (อินเตอร์เซคชัน)) และ การเลือกข้อมูลเฉพาะข้อมูลที่แตกต่างจากอีกเซ็ตข้อมูล (Difference)
เราจะพิจารณาเซ็ตสองชุดต่อไปนี้
# ตัวอย่างของ Sets
album_set1 = set(["Thriller", 'AC/DC', 'Back in Black'])
album_set2 = set([ "AC/DC", "Back in Black", "The Dark Side of the Moon"])
# แสดงข้อมูลทั้งสอง Set
album_set1, album_set2
({'AC/DC', 'Back in Black', 'Thriller'},
{'AC/DC', 'Back in Black', 'The Dark Side of the Moon'})
การเลือกข้อมูลเฉพาะที่ซ้ำซ้อนกัน (Intersection)
การเลือกข้อมูลเฉพาะที่ซ้ำซ้อนกัน (Intersection) เป็นการค้นหาข้อมูลเฉพาะข้อมูลที่มีร่วมกันหรือมีเหมือนกันระหว่างข้อมูลในแต่ละเซ็ต โดยอาจจะใช้เครื่องหมายดำเนินการ &
หรือจะใช้เมธอด intersection( )
ในการดึงข้อมูลที่มีร่วมกันก็ได้
เนื่องจากข้อมูลทั้งสองชุดมี AC/DC และ Back in Black ร่วมกัน เราจึงสามารถแสดงข้อมูลที่มีร่วมกันด้วยจุดตัดของวงกลมสองวงได้ ดังรูป
ใช้เครื่องหมายดำเนินการ “&” ในการดึงข้อมูลที่มีร่วมกัน
# เลือกเฉพาะข้อมูลที่ซ้ำซ้อนกัน (Intersection)
intersection = album_set1 & album_set2
intersection
{'AC/DC', 'Back in Black'}
หรือจะใช้เมธอด intersection( )
ในการดึงข้อมูลที่มีร่วมกันระหว่าง album_list1
กับ album_list2
ก็ได้
album_set1.intersection(album_set2)
{'AC/DC', 'Back in Black'}
เราสามารถแสดงข้อมูลที่มีร่วมกันด้วยจุดตัดของวงกลมสองวงได้ ดังรูป
การเลือกข้อมูลเฉพาะข้อมูลที่ต่างจากอีกเซ็ตข้อมูล (Difference)
การเลือกข้อมูลเฉพาะข้อมูลที่ต่างจากอีกเซ็ตข้อมูล (Difference) คือ การหาเฉพาะข้อมูลที่มีอยู่ในเซ็ตหนึ่ง แต่ข้อมูลดังกล่าวไม่มีอยู่ในอีกเซ็ตหนึ่งที่นำมาเปรียบเทียบ โดยอาจจะใช้เครื่องหมายลบ -
หรือจะใช้เมธอด difference( )
ก็ได้
เราสามารถหาสมาชิกทุกตัวที่มีอยู่เฉพาะใน album_set1
ได้โดยใช้เครื่องหมายลบ -
# หาข้อมูลที่ต่างที่อยู่ใน set1 แต่ไม่อยู่ใน set2
difference1_2 = album_set1 - album_set2
difference1_2
{'Thriller'}
หรือจะใช้เมธอด เมธอด difference( )
ก็ได้
# หาข้อมูลที่ต่างที่อยู่ใน set1 แต่ไม่อยู่ใน set2
album_set1.difference(album_set2)
{'Thriller'}
ผลลัพธ์ที่ได้คือ สมาชิกทุกตัวที่มีอยู่เฉพาะใน album_set1
เท่านั้น แสดงได้ดังรูปต่อไปนี้
หากต้องการหาสมาชิกทุกตัวที่มีอยู่เฉพาะใน album_set2
ก็ทำได้โดยวิธีเดียวกัน
# หาข้อมูลที่ต่างที่อยู่ใน set2 แต่ไม่อยู่ใน set1
difference2_1 = album_set2 - album_set1
difference2_1
{'The Dark Side of the Moon'}
# หาข้อมูลที่ต่างที่อยู่ใน set2 แต่ไม่อยู่ใน set1
album_set2.difference(album_set1)
{'The Dark Side of the Moon'}
การรวมข้อมูลกัน (Union)
การรวมข้อมูลกัน (Union) เป็นการดึงข้อมูลทั้งหมดจากแต่ละเซ็ตแล้วรวมเข้าด้วยกัน ถ้าข้อมูลซ้ำกันจะดึงข้อมูลดังกล่าวออกมาเพียงข้อมูลเดียว ดังรูป
การรวมข้อมูลสามารถทำได้โดยใช้เครื่องหมายดำเนินการ |
หรือจะใช้เมธอด union( )
ก็ได้
การรวมข้อมูลโดยใช้เครื่องหมายดำเนินการ |
# รวมข้อมูลของทั้งสองเซ็ต
union = album_set1 | album_set2
union
{'AC/DC', 'Back in Black', 'The Dark Side of the Moon', 'Thriller'}
หรือจะรวมข้อมูลโดยใช้เมธอด union( )
ก็ได้
# รวมข้อมูลของทั้งสองเซ็ต
album_set1.union(album_set2)
{'AC/DC', 'Back in Black', 'The Dark Side of the Moon', 'Thriller'}
การเลือกข้อมูลจากทุกเซ็ตโดยเลือกเฉพาะข้อมูลที่แตกต่างจากเซ็ตอื่นๆ (Symmetric difference)
คือ การเลือกข้อมูลจากทุกเซตโดยเลือกเฉพาะข้อมูลที่เซตนั้นๆ มีแตกต่างจากเซตอื่น(symmetric difference)
คือการดึงข้อมูลที่มีอยู่เฉพาะในแต่ละเซ็ตแต่ไม่มีอยู่ในเซ็ตอื่นๆ ที่นำมาใช้เปรียบเทียบ พูดอีกอย่างหนึ่งก็คือ… การนำสมาชิกของทุกเซ็ตมารวมกัน (Union) แต่ไม่นับเอาสมาชิกมีเหมือนกันหรือมีร่วมกัน (Intersection) นั่นเอง โดยจะใช้เครื่องหมายดำเนินการ ^
(XOR) หรือจะใช้เมธอด symmetric_difference( )
ในการดึงข้อมูลก็ได้
# เลือกข้อมูลจากทุกเซ็ตโดยเลือกเฉพาะข้อมูลที่แตกต่างจากเซ็ตอื่นๆ (Symmetric difference)
symmetric_difference = album_set1 ^ album_set2
symmetric_difference
{'The Dark Side of the Moon', 'Thriller'}
หรือจะรวมข้อมูลโดยใช้เมธอด symmetric_difference( )
ก็ได้
# รวมข้อมูลของทั้งสองเซ็ต
album_set1.symmetric_difference(album_set2)
{'The Dark Side of the Moon', 'Thriller'}
ซึ่งจะมีค่าเท่ากับ การนำสมาชิกของทุกเซ็ตมารวมกัน (Union) แต่ไม่นับเอาสมาชิกมีเหมือนกันหรือมีร่วมกัน (Intersection)
union - intersection
{'The Dark Side of the Moon', 'Thriller'}
การเปรียบเทียบ Sets#
นอกจากนี้ เรายังสามารถทำการเปรียบเทียบ Set เพื่อตรวจสอบความสัมพันธ์ระหว่างเซ็ตสองเซ็ตได้ เช่น ตรวจสอบว่าเซ็ตที่เราต้องการเป็น superset (หรือ power set (เพาเวอร์เซ็ต)) หรือเป็น subset (สับเซ็ต (เซ็ตย่อย)) ของอีกเซ็ตหรือไม่ โดยใช้เมธอด issuperset( )
และ issubset( )
ตามลำดับ
# ตรวจสอบว่าเป็น superset หรือไม่
set(album_set1).issuperset(album_set2) # or
# album_set1.issuperset(album_set2)
False
# ตรวจสอบว่าเป็น subset หรือไม่
set(album_set2).issubset(album_set1) # or
# album_set2.issubset(album_set1)
False
ตัวอย่างถัดไปเป็นตัวอย่างที่ issubset()
และ issuperset()
คืนค่าจริง (True) ทั้ง 2 ตัวอย่าง
album_set1
{'AC/DC', 'Back in Black', 'Thriller'}
# ตรวจสอบว่าเป็น subset หรือไม่
set({"Back in Black", "AC/DC"}).issubset(album_set1)
True
# ตรวจสอบว่าเป็น superset หรือไม่
album_set1.issuperset({"Back in Black", "AC/DC"})
True
[Exercise]#
1.
จงแปลงลิสต์ ['rap','house','electronic music', 'rap']
ให้เป็นข้อมูลชนิดเซ็ต
# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter
Click here for the solution
set(['rap','house','electronic music', 'rap']) # {'electronic music', 'house', 'rap'}
2.
กำหนด ลิสต์ A = [1, 2, 2, 1]
และเซ็ต B = set([1, 2, 2, 1])
, ถามว่า sum(A) == sum(B)
หรือไม่?
# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter
Click here for the solution
A = [1, 2, 2, 1]
B = set([1, 2, 2, 1])
print("the sum of A is:", sum(A)) # the sum of A is: 6
print("the sum of B is:", sum(B)) # the sum of B is: 3
print(sum(A)==sum(B)) # False
3.
จากเซ็ต frontend_developer_lang
และเซ็ต backend_developer_lang
ต่อไปนี้
จงสร้างเซ็ตชุดใหม่ all_developer_lang
ที่เกิดจากการรวมข้อมูลกัน (Union) ระหว่างสองเซ็ตนี้โดยที่ไม่ใช้เมธอด union()
# เขียนโค้ดต่อด้านล่าง แล้วกด Shift+Enter
album_set1 = set(["Thriller", 'AC/DC', 'Back in Black'])
album_set2 = set([ "AC/DC", "Back in Black", "The Dark Side of the Moon"])
Click here for the solution
frontend_developer_lang = set(['HTML', 'CSS', 'JavaScript', 'Angular', 'ReactJS', 'Node.js', '.Net', 'Python'])
backend_developer_lang = set(['PHP', 'C++', 'Java', 'Python', 'Ruby', 'Node.js', '.Net', 'JavaScript'])
all_developer_lang = set() # สร้างเซ็ตว่าง
all_developer_lang.update(frontend_developer_lang, backend_developer_lang) # เพิ่มเซ็ททั้งสองเข้าเป้นสมาชิก
all_developer_lang```
</details>
4.
จากข้อก่อนหน้า จงตรวจสอบว่า frontend_developer_lang
เป็น subset ของ all_developer_lang
หรือไม่
# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter
Click here for the solution
# เขียนโค้ดด้านล่าง แล้วกด Shift+Enter
frontend_developer_lang.issubset(all_developer_lang) # True
Change Log#
Date |
Version |
Change Description |
---|---|---|
08-08-2021 |
0.1 |
First edition |
05-05-2022 |
0.2 |
Fix the typo, minor change |