Tuple & Set
Table of Contents
- ▶️ GG Slide
- 📖 Python 101
1) Tuples
tuple
เป็นข้อมูลประเภทsequence
- เก็บข้อมูลอะไรก็ได้ มี index สำหรับเข้าถึงข้อมูลคล้าย
list
- แตกต่างกับ
list
ที่tuple
ไม่สามารถแก้ไขข้อมูลย่อยได้
1.1) การใช้งาน
- สร้าง
tuple
เหมือนสร้างlist
แต่ใช้วงเล็บโค้ง()
หรือใช้คำสั่งtuple()
x = 2, 4, 6
y = (8, 2, 4)
print(x)
print(y)
print(y[0])
(2, 4, 6)
(8, 2, 4)
8
t1 = tuple()
t2 = ()
print(t1)
print(t2)
()
()
- หากมีสมาชิกตัวเดียว แต่อยากให้เป็น
tuple
จะต้องใส่ comma (,
) ด้านหลัง
x = 10,
print(x)
print(len(x))
(10,)
1
x = (10,)
print(x)
print(len(x))
(10,)
1
- แปลงจาก
string
/list
t = tuple('mwit')
print(t)
('m', 'w', 'i', 't')
x = [1, 2, 3]
t = tuple(x)
print(t)
for d in t:
print(d)
(1, 2, 3)
1
2
3
- ไม่สามารถแก้ไขข้อมูลย่อยได้ แต่สามารถกำหนดค่าทั้ง
tuple
ใหม่ได้
t = (1,2,3)
t[0] = 10
จะเกิด TypeError
x = 9
t = (1, 2, 3)
t = t + (x,)
t = t + (99,)
print(t)
print(t[2])
(1, 2, 3, 9, 99)
3
1.2) ประโยชน์ของ tuple
- สามารถเปรียบเทียบได้ โดยจะเปรียบเทียบไล่จากสมาชิกตัวแรก ถ้าหากว่าเท่ากันก็จะเทียบสมาชิกถัดไปเรื่อย ๆ
a = (1, 2, 3, 4)
b = (1, 2, 2, 99)
print(a>b)
True
- สามารถสลับค่าได้
a = 1
b = 2
a, b = b, a
print(a)
print(b)
2
1
- เมื่อ return ค่าจากฟังก์ชันหลาย ๆ ค่า มันจะส่งค่ากลับเป็น tuple
- จากตัวอย่างโค้ดด้านล่าง ฟังก์ชัน min_max จะส่งค่ากลับเป็น tuple ซึ่งจัดเก็บค่าน้อยสุดและมากสุดของ t

def min_max(t):
return min(t), max(t)
x = [1, -3, 8, 99, 0]
result = min_max(x)
print(result)
ans1, ans2 = min_max(x)
print(ans1)
print(ans2)
(-3, 99)
-3
99
- argument ที่ไม่รู้จำนวนล่วงหน้า (variable-length argument tuples)

def printall(*txt):
print(txt)
print(len(txt))
a = 'hello'
b = 'mwit'
c = 'bye bye'
printall(a, b)
printall(a, b, c)
('hello', 'mwit')
2
('hello', 'mwit', 'bye bye')
3
2) Exercise
2.1) Exercise 1
จงเขียนฟังก์ชัน myavg
ดังนี้
- เป็นฟังก์ชันที่รับ arguments ที่เป็นเลขจำนวนเต็มกี่ตัวก็ได้ แล้วส่งค่ากลับเป็นค่าเฉลี่ยของข้อมูลทั้งหมด
ตัวอย่าง
myavg(3, 4, 5, 6, 1, 2)
== 3.5myavg(10, 30, 20)
== 20.0
2.2) Exercise 2
จงเขียนฟังก์ชัน sumall
ดังนี้
- เป็นฟังก์ชันที่รับ arguments ที่เป็นข้อมูลประเภท iterable (เช่น
list
,tuple
) ที่ภายในเป็นเลขจำนวนเต็มกี่ตัวก็ได้ แล้ว - ส่งค่ากลับเป็นผลบวกของข้อมูลทั้งหมด
2.3) Exercise 3
จงเขียนฟังก์ชัน
student_bmi
เพื่อรับ list
ของ tuple
(รหัสนักเรียน, น้ำหนัก, ส่วนสูง) ของนักเรียน จากนั้น
- return
list
ของtuple
ที่เก็บข้อมูล (รหัสนักเรียน, BMI) ของนักเรียนที่มีค่า BMI มากกว่าค่า BMI เฉลี่ย โดยเรียงลำดับข้อมูลตามลำดับที่กรอกข้อมูลเข้ามา (ดูจากตัวอย่าง)
กำหนดให้ คำนวนหาค่า BMI ด้วยสูตร bmi = weight/(height*height)
ตัวอย่าง
student_bmi([
('001', 50, 1.65),
('022', 60, 1.7),
('018', 50, 1.52)
])
จะได้ [('022', 20.761245674740486), ('018', 21.641274238227147)]
3) Set
- ▶️ GG Slide
- 📖 Python 101
set
เป็นcollection
ที่ไม่มีการเรียงและไม่มีการ index (unordered and unindexed)- มีลักษณะคล้ายกับเซ็ตทางคณิตศาสตร์
- เซ็ตสามารถมีสมาชิกเป็น
immutable data
ใด ๆ ก็ได้ เช่น ตัวเลข สตริง tuple- แต่จะมีสมาชิกเป็น
mutable data
เช่นlist
ไม่ได้ (อาจะเกิดunhashable
error)
- แต่จะมีสมาชิกเป็น
3.1) การสร้าง set
A = {1, 2, 3}
B = set('mwit')
C = set()
print(A)
print(B)
print(C)
{1, 2, 3}
{'w', 't', 'i', 'm'}
set()
A = {1, 2, 3}
B = {3, 2, 3, 1}
print(A)
print(B)
print(A == B)
{1, 2, 3}
{1, 2, 3}
True
3.2) การใช้งานต่าง ๆ
- การเข้าถึงข้อมูล
a = {'ant', 'cat', 'bat'}
for x in a:
print(x)
print('cat' in a)
print('cat' not in a)
print(len(a))
ant
cat
bat
True
False
3
- ใช้
sorted
หากต้องการเข้าถึงข้อมูลแบบที่เรียงลำดับ
a = {'ant', 'cat', 'bat'}
b = [123, 100, -99]
c = ('an', 'art', 'ant')
for x in sorted(a):
print(x, end=' ')
print()
for x in sorted(b):
print(x, end=' ')
print()
for x in sorted(c):
print(x, end=' ')
print()
ant bat cat
-99 100 123
an ant art
add(x)
เพื่อเพิ่มx
เข้าในset
a = {1, 2, 3}
a.add(10)
a.add(3)
a.add('five')
a.add((4, 5))
print(a)
{1, 2, 3, 10, 'five', (4, 5)}
update(s)
เพื่อเพิ่ม sequence data เข้าในset
a = {1, 2}
b = {3, 4, 5}
a.update(b)
a.update([10, 20])
a.update('bye')
print(a)
{1, 2, 3, 4, 5, 10, 20, 'e', 'b', 'y'}
discard(x)
ในการลบx
ออกจากset
a = {1, 2, 3, 4}
a.discard(2)
print(a)
{1, 3, 4}
sets.union()
,intersection()
,difference()
เสมือนทางคณิตศาสตร์
a = {1, 2, 3}
b = {2, 3, 4}
print(a.union(b))
print(a.intersection(b))
print(a.difference(b))
print(a)
print(b)
{1, 2, 3, 4}
{2, 3}
{1}
{1, 2, 3}
{2, 3, 4}
- ซึ่งใช้
|
,&
,-
แทนได้
a = {1, 2, 3}
b = {2, 3, 4}
print(a | b)
print(a & b)
print(a - b)
print(a)
print(b)
{1, 2, 3, 4}
{2, 3}
{1}
{1, 2, 3}
{2, 3, 4}
4) Exercise
จงเขียนฟังก์ชันเพื่อรับสตริง 2 ตัว แล้ว return ค่าเป็น
list
ของอักขระที่ปรากฎอยู่ในทั้งสองสตริง ที่เรียงลำดับตามพยัญชนะ (กำหนดให้แปลงสตริงทั้งสองสตริงให้เป็นตัวพิมพ์ใหญ่ทั้งหมดก่อน แล้วจึงหาตัวอักษรที่ปรากฏในทั้งสองสตริงนั้น) ตามตัวอย่าง
ตัวอย่างการเรียกใช้ฟังก์ชัน common_char เช่น
common_char("book", "bank")
== ['B', 'K']