[Part 3] Python 101: Collections

[Part 3] Python 101: Collections

Photo by Giammarco Boscaro / Unsplash

Collections Variable

จากที่เรียนตัวแปรและชนิดของตัวแปรไปเมื่อคราวที่แล้ว

[Part 1] Python 101: Basic programming
Basic Process Basic syntax 1. Comment ใช้ # คั่นข้างหน้าสุด ส่วนนั้นจะไม่ทำงาน ใช้อธิบายโค้ดหรือใช้โน้ตสำหรับ Developer # Hello Python 2. Output # print hello world print(“Hello World”) 3. Input # filling name text print(‘Enter your name:’) # scan input from keyboard x

เราจะเห็นได้ว่าข้อมูลที่เก็บเป็นแบบข้อมูลเดียวต่อ 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 = ใช้ข้อมูลถึงตำแหน่งสุดท้าย
      • สามารถใช้ตำแหน่งติดลบได้
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 จากนั้นแสดงผลตามเงื่อนไขต่อไปนี้

    1. แสดงผลชื่อสุดท้ายที่เพิ่ม
    2. แสดงผล 2 ชื่อสุดท้าย
    3. แสดงผล 2 ชื่อแรก
    4. แสดงผลชื่อทั้งหมดโดยเรียงตัวอักษร จากน้อยไปมาก

[2] กำหนดค่า

mung = {
  "name": "Mung",
  "age": 25,
  "gender": "male"
}

tookta = {
  "name": "Tookta",
  "age": 21,
  "gender": "female"
}
    1. ให้นำ 2 dict นี้มาแยกใส่ค่าใน List 3 ตัวและเพิ่ม 1 ตัวแปรสำหรับเก็บ userNameMaxAge
    2. listName: ให้นำชื่อทั้ง 2 คนมาใส่ใน List นี้
    3. listAge: ให้นำอายุทั้ง 2 คนมาใส่ใน List นี้
    4. listGender: ให้นำเพศของทั้ง 2 คนมาใส่ใน List นี้
    5. userNameMaxAge: ให้นำค่ามาเปรียบเทียบกัน ถ้าใครอายุมากกว่า ให้นำชื่อมาใส่ (ใส่ชื่อเดียว)

[3] สร้าง List ในการเก็บผลของเกมส์ XO โดย

    1. เก็บข้อมูลเป็น List 2 มิติเก็บแถวและคอลัมน์โดยให้เหลือ
    2. ข้อมูลเป็น "X" หรือ "O" หรือ "" เท่านั้น
    3. ให้ข้อมูลเริ่มต้นเป็นดังตารางข้างล่าง
    4. ให้เขียนโค้ดปรับค่า O ที่ทำให้ชนะเกมนี้ได้
    5. แสดงผลตาราง XO ทั้งตาราง

Reference

สาระ Python น่ารู้ !! ตอนที่ 1 : List คืออิหยัง ?
ในบทความนี้เราจะมาเรียนรู้และทำความรู้จักเจ้าตัว List ของ Python กัน และเราจะมาดูความสามารถของเจ้า List ว่าสามารถทำอะไรได้บ้างนะ
Tuples, การสร้างและใช้งาน Tuple ในภาษา Python - MarcusCode