Collections Variable
จากที่เรียนตัวแปรและชนิดของตัวแปรไปเมื่อคราวที่แล้ว
เราจะเห็นได้ว่าข้อมูลที่เก็บเป็นแบบข้อมูลเดียวต่อ 1 ตัวแปร ซึ่งในการทำงาน อาจจะต้องจัดการกับข้อมูลที่ซับซ้อนหรือจำนวนมากๆ Python ก็มี List, Tuples, Sets, Dictionary ที่สามารถเก็บข้อมูลจำนวนมากๆ และซับซ้อนได้
List
Defination
List ใช้เก็บข้อมูลมากกว่า (หรือเท่ากับ) 1 ตัว ในรูปแบบแบบลำดับซึ่งจะมี Index ที่ทำหน้าที่ระบุตำแหน่งของข้อมูลแต่ละตัว สามารถเก็บข้อมูลได้หลายประเภทในเวลาเดียวกัน
Syntax
# List definition similar as variable
listData = ["data1", "data2"]
listNumber = [1, 2, 3, 4, 5]
# Can store multiple type
listMultipleData = ["data1", 2, False]
# Empty list
empty = []
Access & Control List
listName = ["Mung", "Boy", "Peach"]
print(listName) # should show list above
print(type(listName)) # should show type List
- ตำแหน่งของข้อมูล (index) จะเริ่มต้นที่
0
- ตำแหน่งสุดท้ายคือ
จำนวนข้อมูลทั้งหมด - 1
- สามารถใส่จำนวนติดลบได้ โดยตำแหน่งจะกลับกันแทน
-1
คือตำแหน่งสุดท้าย- ตำแหน่งแรกคือ
-ตำแหน่งสุดท้าย
listName = ["Mung", "Boy", "Peach"]
print(listName[0])
print(listName[2])
print(listName[-1])
print(listName[-3])
- สามารถตรวจสอบจำนวนข้อมูลได้ด้วยฟังก์ชัน
len()
- สามารถทำ sublist โดยตัดบางตำแหน่งออกได้:
listName[start:end]
- start: index เริ่มต้น
- end: index สุดท้าย
- ไม่มี start หรือ end ก็ได้
- ถ้าไม่ใส่ start = ใช้ข้อมูลตั้งแต่ index แรก
- ถ้าไม่ใส่ end = ใช้ข้อมูลถึงตำแหน่งสุดท้าย
- สามารถใช้ตำแหน่งติดลบได้
- start: index เริ่มต้น
listName = ["Mung", "Boy", "Peach", "Ploy", "Kung"]
print(len(listName)) # show count data in list
print(listName[1:2]) # want Boy, Peach
print(listName[4:]) # want Kung
print(listName[:3]) # wany Mung, Boy, Peach
- สามารถใช้
if in
เช็คว่ามีข้อมูลที่ต้องการใน List นั้นหรือไม่
listName = ["Mung", "Boy", "Peach", "Ploy", "Kung"]
if "Mung" in listName:
print("have Mung")
- การเปลี่ยนข้อมูลใน list สามารถใช้ syntax แบบตัวแปรปกติได้ แต่ให้ระบุ index ด้วย
listName = ["Mung", "Boy", "Peach", "Ploy", "Kung"]
listName[2] = "Bell"
print(listName)
Methods
.append()
ใช้เพิ่มข้อมูลไปที่หลังตัวสุดท้ายของ List.insert()
ใช้เพิ่มข้อมูลตำแหน่งที่ต้องการใน List.remove()
ใช้ลบข้อมูลที่ต้องการใน List.pop()
ใช้ลบข้อมูลตำแหน่งสุดท้ายของ List.sort()
ใช้เรียงลำดับของ list จากมากไปน้อยหรือจากน้อยไปมาก.copy()
ใช้คัดลอก List ไปยัง List อื่น
listName = ["Mung", "Boy", "Peach", "Ploy", "Kung"]
# should have Bell in last index
listName.append("Bell")
print(listName)
# should have Ball at 2nd
listName.insert(2, "Dave")
print(listName)
# should not have Mung
listName.remove("Mung")
print(listName)
# should not have Bell
listName.pop()
print(listName)
# should sort ascending
listName.sort()
print(listName)
Tuple
Definition
Tuple จะคล้ายกับ List ต่างกันเป็นประเภทข้อมูลที่ไม่สามารถเปลี่ยนแปลงได้ (Immutable) คือ ไม่สามารถแก้ไข เพิ่ม ลด ได้ เหมาะกับใช้เก็บค่าคงที่ การเข้าถึง index ต่างๆ ใช้หลักการเดียวกับ List
Syntax
tupleName = ("Mung", "Boy", "Jack")
print(type(tupleName))
print(tupleName)
print(tupleName[1])
Set
Definition
Set สามารถเก็บข้อมูลได้จำนวนมากเหมือน List และ Tuples แต่ไม่สามารถเข้าถึงด้วย index ได้ สามารถเพิ่ม/ลดได้ แต่ไม่สามารถแก้ไขค่าในตำแหน่งใดๆได้ และที่สำคัญไม่สามารถมีค่าซ้ำใน Sets ได้
Syntax
setName = {"Mung", "Boy", "Keng"}
print(setName)
print(type(setName))
print("Boy" in setName)
setName.add("Ball")
setName.remove("Ball")
Dictionary
Definition
เป็นตัวแปรที่ใช้เก็บข้อมูลที่เป็นลักษณะ key:value ซึ่งไว้ระบุค่าที่จำเป็นต่างๆ ของตัวแปรนั้น
Syntax
testDict = {
key1: value1,
key2: value2,
key3: value3
}
Access & Control Dictionary
- การเข้าถึงใช้ชื่อตัวแปรตามด้วย key =>
var[key]
user = {
"name": "Mung",
"age": 25,
"gender": "male"
}
print(user["name"]) # access user's name
# change user's age
user["age"] = 28
print(user)
Nested Collections
Nested List
2Dlist = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Nested Dictionary
userData = {
"user1": {
"name": "Mung",
"age": 28
},
"user2": {
"name": "Tom",
"age": 51
}
}
Exercise
[1] สร้างโปรแกรมรับชื่อ 3 ชื่อเข้ามาใส่ใน List จากนั้นแสดงผลตามเงื่อนไขต่อไปนี้
- แสดงผลชื่อสุดท้ายที่เพิ่ม
- แสดงผล 2 ชื่อสุดท้าย
- แสดงผล 2 ชื่อแรก
- แสดงผลชื่อทั้งหมดโดยเรียงตัวอักษร จากน้อยไปมาก
[2] กำหนดค่า
mung = {
"name": "Mung",
"age": 25,
"gender": "male"
}
tookta = {
"name": "Tookta",
"age": 21,
"gender": "female"
}
- ให้นำ 2 dict นี้มาแยกใส่ค่าใน List 3 ตัวและเพิ่ม 1 ตัวแปรสำหรับเก็บ
userNameMaxAge
listName
: ให้นำชื่อทั้ง 2 คนมาใส่ใน List นี้listAge
: ให้นำอายุทั้ง 2 คนมาใส่ใน List นี้listGender
: ให้นำเพศของทั้ง 2 คนมาใส่ใน List นี้userNameMaxAge
: ให้นำค่ามาเปรียบเทียบกัน ถ้าใครอายุมากกว่า ให้นำชื่อมาใส่ (ใส่ชื่อเดียว)
[3] สร้าง List ในการเก็บผลของเกมส์ XO โดย
- เก็บข้อมูลเป็น List 2 มิติเก็บแถวและคอลัมน์โดยให้เหลือ
- ข้อมูลเป็น "X" หรือ "O" หรือ "" เท่านั้น
- ให้ข้อมูลเริ่มต้นเป็นดังตารางข้างล่าง
- ให้เขียนโค้ดปรับค่า O ที่ทำให้ชนะเกมนี้ได้
- แสดงผลตาราง XO ทั้งตาราง
Reference

