สวัสดีครับทุกท่าน หวังว่าสงกรานต์ที่ผ่านมาทุกคนจะมีความสุขกันนะครับ วันนี้ผมกลับมาแล้วครับ มาพร้อมกับหัวข้อที่ผมเชื่อว่าน่าจะเป็นประโยชน์ไม่มากก็น้อยสำหรับผู้ที่กำลังสนใจ หรือกำลังศึกษาเรื่องภาษา Python กันอยู่
Python นั้นถือได้ว่าเป็นภาษาที่ค่อนข้างเป็นที่นิยมและยังถือว่าเป็น High-level programming language อีกด้วยครับ โดย Python นั้นถูกปล่อยออกมาครั้งแรกเมื่อปี 1991 แถมมันเองยังเป็นภาษาภาษาที่แปลด้วยตัวแปลภาษา ซึ่งหมายความว่าไม่จำเป็นต้องคอมไพล์ก่อนเรียกใช้เหมือนภาษาอื่นๆ บางภาษา
สาเหตุหนึ่งที่ทำให้ Python ได้รับความนิยมคือการเรียนรู้และใช้งานที่ค่อนข้างง่าย ไวยากรณ์ของมันตรงไปตรงมาและเรียบง่าย และสามารถอ่านได้ง่าย ซึ่งทำให้ผู้คนทำงานร่วมกันในโครงการได้ง่ายขึ้น
ตัวแปรและประเภทของ Python
ตัวแปรหรือที่เราเรียกกันว่า A variable นั้นคือ named container ที่เอาไว้เก็บค่าต่างๆ ซึ่งสามารถเป็นประเภทข้อมูลใดก็ได้ เช่น สตริง จำนวนเต็ม หรือเลขทศนิยม คุณสามารถกำหนดค่าให้กับตัวแปรโดยใช้เครื่องหมายเท่ากับ (=) และใช้มันในโค้ดทั้งหมดของคุณได้
- float — real numbers
- int — integer numbers
- str — string, text
- bool — True, False
height = 1.79
weight = 68.7
height
output:
1.79
Conditional Operators
ใน Python นั้นตัวดำเนินการเงื่อนไขจะใช้ในการสร้างนิพจน์เงื่อนไขที่ประเมิน True หรือ False โดยขึ้นอยู่กับว่าตรงตามเงื่อนไขที่กำหนดหรือไม่ ตัวดำเนินการเงื่อนไขที่ใช้บ่อยที่สุดใน Python ได้แก่:
- ‘==’ — equal to
- ‘!=’ — not equal to
- ‘>’ — greater than
- ‘<’ — less than
- ‘>=’ — greater than or equal to
- ‘<=’ — less than or equal to
"hello" == "Hello"
output:
False
10>=10
output:
True
Logical Operators
ใน Python ตัวดำเนินการเชิงตรรกะใช้เพื่อรวมนิพจน์เงื่อนไขเข้ากับนิพจน์ที่ซับซ้อนมากขึ้นซึ่งสามารถประเมินได้ว่าเป็น True หรือ False ตัวดำเนินการเชิงตรรกะสามตัวใน Python ได้แก่:
- and — คืนค่า True หากนิพจน์ทั้งสองเป็น True
- or — คืนค่า True ถ้านิพจน์อย่างน้อยหนึ่งนิพจน์เป็นจริง
- not — ส่งกลับ True หากนิพจน์เป็น False และ False หากนิพจน์เป็น True
# or
(1 == 2) or (2 == 3) or (4 == 4)
output:
False
# or
(1 == 2) or (2 == 3) or (4 == 4)
output:
True
Python Lists
รายการคือคอลเลกชันของลำดับ (เนื่องจากองค์ประกอบของรายการถูกจัดเก็บไว้ในลำดับดัชนีเฉพาะ) และองค์ประกอบที่ไม่แน่นอน ซึ่งอาจอยู่ในประเภทข้อมูลใดก็ได้ เช่น สตริง จำนวนเต็ม หรือวัตถุอื่นๆ รายการถูกกำหนดโดยใช้วงเล็บเหลี่ยม [] และคั่นแต่ละองค์ประกอบด้วยเครื่องหมายจุลภาค
list1 = ["a", "b", "c"]
print(list1)
output:
['a', 'b' , 'c']
marks = ["Ali", 99 , "Sara", 99 ,"Zara", 98]
print(marks)
output:
['Ali', 99, 'Sara', 99, 'Zara', 98]
marks = [["Ali", 99],
["Sara", 99],
["Zara", 98]]
print(marks)
output:
[['Ali', 99], ['Sara', 99], ['Zara', 98]]
รายการย่อย
marks = ["Ali", 99 , "Sara", 99 ,"Zara", 98]
print(marks[0]) # Output: "Ali"
print(marks[1]) # Output: "99"
print(marks[2]) # Output: "Sara"
การแบ่งส่วนรายการ
[start : end]
print(marks[1:3]) #start is inclusive, end is exclusive
print(marks[3:4])
print(marks[0:])
print(marks[:-1])
output:
[99, 'Sara']
[99]
['Ali', 99, 'Sara', 99, 'Zara', 98]
['Ali', 99, 'Sara', 99, 'Zara']
Manipulating lists
- เปลี่ยนองค์ประกอบของรายการ
- เพิ่มองค์ประกอบรายการ
- ลบองค์ประกอบรายการ
#Change list elements
marks[1] = 92 #changing marks for Ali
print(marks)
output:
['Ali', 92, 'Sara', 99, 'Zara', 98]
marks[2:4] = ["Sania" , 95]
print(marks)
output:
['Ali', 92, 'Sania', 95, 'Zara', 98]
#Adding and removing elements
marks = marks + ["Sam" , 96]
print(marks)
output:
['Ali', 92, 'Sania', 95, 'Zara', 98, 'Sam', 96]
del(marks[7]) #Sam marks removed form list
print(marks)
output:
['Ali', 92, 'Sania', 95, 'Zara', 98, 'Sam']
ฟังก์ชั่น
ใน Python ฟังก์ชันคือกลุ่มโค้ดที่มีชื่อซึ่งทำงานเฉพาะเจาะจง ฟังก์ชันต่างๆ ใช้เพื่อแบ่งโปรแกรมขนาดใหญ่ออกเป็นส่วนย่อยๆ ที่จัดการได้มากขึ้น และเพื่อนำโค้ดที่จำเป็นกลับมาใช้ซ้ำในหลายๆ ที่
ฟังก์ชันใน Python ถูกกำหนดโดยใช้คีย์เวิร์ด “def” ตามด้วยชื่อฟังก์ชัน ชุดของวงเล็บ และทวิภาค เนื้อหาของฟังก์ชันจะถูกเยื้องและมีรหัสที่ฟังก์ชันดำเนินการเมื่อเรียกใช้ ฟังก์ชันยังสามารถใช้พารามิเตอร์เป็นอินพุตและส่งคืนค่าเป็นเอาต์พุตได้
def sum(x, y):
return x + y
z = sum(2, 9)
print(z) # Output: 11
output:
11
#there as built-in functions as well
len = [1.3, 8.6, 4.5, 3.4]
max(len)
output:
8.6
Help
help(round) # Open up documentation
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
round(1.68, 1)
output:
1.7
Methods
ใน Python เมธอดคือฟังก์ชันที่เกี่ยวข้องกับออบเจกต์ เป็นฟังก์ชันประเภทหนึ่งที่ถูกเรียกใช้ในอินสแตนซ์ของคลาส และดำเนินการกับข้อมูลที่อยู่ในอินสแตนซ์นั้น
เมธอดถูกกำหนดไว้ในคำจำกัดความของคลาสและเข้าถึงได้โดยใช้สัญลักษณ์จุดบนอินสแตนซ์ของคลาส พารามิเตอร์ตัวแรกของเมธอดคือตัวอินสแตนซ์ของอ็อบเจกต์เองเสมอ ซึ่งเรียกตามอัตภาพว่า self ซึ่งหมายถึงอินสแตนซ์ที่เรียกใช้เมธอด
# String methods
text = "Data Science"
print(text.upper()) # "DATA SCIENCE"
print(text.lower()) # "data science"
print(text.capitalize()) # "Data science"
output:
DATA SCIENCE
data science
Data science
# Lists methods
numbers = [1, 4, 0, 2, 9, 9, 10]
numbers.reverse()
print(numbers) # [10, 9, 9, 2, 0, 4, 1]
numbers.sort()
print(numbers) # [0, 1, 2, 4, 9, 9, 10]
output:
[10, 9, 9, 2, 0, 4, 1]
[0, 1, 2, 4, 9, 9, 10]
# Dictionaris methods
ratings = {
"Ex Machina": 7.7,
"Mad Max: Fury Road": 8.1,
"1408" : 6.8
}
print(ratings.keys()) # dict_keys(['Ex Machina', 'Mad Max: Fury Road', '1408'])
print(ratings.values()) # dict_values([7.7, 8.1, 6.8])
print(ratings.items()) # dict_items([('Ex Machina', 7.7), ('Mad Max: Fury Road', 8.1), ('1408', 6.8)])
output:
dict_keys(['Ex Machina', 'Mad Max: Fury Road', '1408'])
dict_values([7.7, 8.1, 6.8])
dict_items([('Ex Machina', 7.7), ('Mad Max: Fury Road', 8.1), ('1408', 6.8)])
Packages
ใน Python แพ็คเกจคือชุดของโมดูลที่เกี่ยวข้องซึ่งจัดเข้าด้วยกันในลำดับชั้นของไดเร็กทอรี แพ็คเกจสามารถมีแพ็คเกจอื่น ๆ เช่นเดียวกับโมดูล แพ็คเกจเป็นวิธีการจัดระเบียบและนำโค้ดกลับมาใช้ใหม่ในลักษณะโมดูลาร์และปรับขนาดได้ ช่วยให้คุณสามารถจัดกลุ่มการทำงานที่เกี่ยวข้องกันและทำให้ง่ายต่อการใช้ซ้ำในหลายโปรเจ็ค แพ็คเกจยังช่วยให้แจกจ่ายและติดตั้งไลบรารี่และแอพพลิเคชั่นได้ง่ายขึ้น
Python มีระบบนิเวศที่หลากหลายของแพ็คเกจและไลบรารี่ที่พร้อมใช้งาน เช่น NumPy, Pandas และ Matplotlib เป็นต้น แพ็คเกจเหล่านี้มีฟังก์ชันสำหรับการคำนวณทางวิทยาศาสตร์ การวิเคราะห์ข้อมูล และการสร้างภาพข้อมูล
- “NumPy” ใช้สำหรับทำงานกับอาร์เรย์อย่างมีประสิทธิภาพ
- “matplotlib” และ “seaborn” เป็นไลบรารียอดนิยมที่ใช้สำหรับการแสดงข้อมูล
- “scikit-learn” เป็นไลบรารีที่ทรงพลังสำหรับ machine learning
การติดตั้งแพ็คเกจ
Install package
http://pip.readthedocs.org/en/stable/installing/
Download get-pip.py
Terminal:
python3 get-pip.py
pip3 install numpy
NumPy arrays และ Python lists ใช้เพื่อจัดเก็บคอลเล็กชันของข้อมูล แต่มีความแตกต่างที่สำคัญบางประการระหว่างสองสิ่งนี้:
- ความสอดคล้องของประเภทข้อมูล: อาร์เรย์ NumPy เป็นแบบเดียวกัน หมายความว่าสามารถจัดเก็บองค์ประกอบของข้อมูลประเภทเดียวเท่านั้น ในขณะที่ lists สามารถจัดเก็บองค์ประกอบของประเภทข้อมูลที่แตกต่างกันได้
- ประสิทธิภาพหน่วยความจำ: อาร์เรย์ NumPy มีประสิทธิภาพหน่วยความจำมากกว่า lists โดยเฉพาะอย่างยิ่งสำหรับชุดข้อมูลขนาดใหญ่ นี่เป็นเพราะ NumPy เก็บข้อมูลในบล็อกที่อยู่ติดกันของหน่วยความจำ ในขณะที่ lists จัดเก็บการอ้างอิงไปยังตำแหน่งหน่วยความจำ
- ใช้งานง่าย: NumPy มีการดำเนินการทางคณิตศาสตร์ที่หลากหลายซึ่งสามารถดำเนินการกับอาร์เรย์โดยไม่ต้องใช้การวนซ้ำ ซึ่งสามารถลดความซับซ้อนของโค้ดและทำให้เร็วขึ้นได้ ในทางกลับกัน lists ต้องการการวนซ้ำอย่างชัดเจนเพื่อดำเนินการกับองค์ประกอบต่างๆ
- ความเร็ว: โดยทั่วไปแล้ว NumPy จะเร็วกว่า lists โดยเฉพาะอย่างยิ่งสำหรับชุดข้อมูลขนาดใหญ่ เนื่องจากใช้งานใน C และใช้การจัดการหน่วยความจำที่มีประสิทธิภาพมากกว่า
import numpy as np
height = [1.73, 1.68, 1.71, 1.89, 1.79]
height = np.array(height)
height
output:
array([1.73, 1.68, 1.71, 1.89, 1.79])
weight = np.array([65.4, 59.2, 63.6, 88.4, 68.7])
weight
output:
array([65.4, 59.2, 63.6, 88.4, 68.7])
bmi = weight / height ** 2
bmi
output:
array([21.85171573, 20.97505669, 21.75028214, 24.7473475 , 21.44127836])
Different types: different behavior!
#list vs arrays
python_list = [1, 2, 3]
numpy_array = np.array([1, 2, 3])
python_list + python_list
output:
[1, 2, 3, 1, 2, 3]
numpy_array + numpy_array
output:
array([2, 4, 6])