Bài giảng Lập trình Python: Bài 7 Kiểu dữ liệu từ điển, module và package cung cấp cho người học những kiến thức như: Dictionary (từ điển); Module và Package; Module math; Bài tập. Mời các bạn cùng tham khảo!
Trang 1LẬP TRÌNH PYTHON
Bài 7: Kiểu dữ liệu từ điển, module và
package
Trang 2Tóm tắt nội dung bài trước
▪ Python có kiểu dữ liệu tập hợp (set) lấy cảm hứng từ tập
hợp trong toán học Set có hai đặc điểm chính:
▪ Các dữ liệu con bên trong nó đôi một khác nhau
▪ Chỉ chứa các dữ liệu loại bất biến (immutable)
▪ Tập hợp không có tính thứ tự, vì vậy không có phép toán
chỉ mục và cắt lát, tuy vậy vẫn có thể duyệt các phần tử con trong tập hợp bằng for
▪ Python cung cấp nhiều phương thức, phép so sánh và
phép toán hữu ích cho tập hợp
▪ Tập tĩnh (frozenset) là tập hợp bất biến, không thể thay
đổi sau khi khởi tạo xong
Trang 4Dictionary (từ điển)
Phần 1
Trang 5▪ Một mục là một cặp (pair) khóa ( key ) và giá trị ( value )
• Tương đương với khái niệm mục từ và ngữ nghĩa trong từ điển thông thường
▪ Các khóa (key) không được trùng nhau, như vậy có thể xem từ điển như một loại set
▪ Các khóa không sắp thứ tự như từ điển thông thường
▪ Chỉ dữ liệu bất biến (immutable) mới được dùng làm khóa
Trang 6Dictionary (từ điển)
▪ Một cặp trong từ điển viết ở dạng <key> : <value>
▪ Từ điển có thể khai báo trực tiếp dùng cú pháp của set
d1 = { } # từ điển rỗng
▪ Như vậy Python coi từ điển là dạng mở rộng của tập hợp
▪ Trường hợp lấy dữ liệu từ nguồn khác, cách thích hợp
nhất là sử dụng hàm khởi tạo dict()
d5 = dict (d4) # lấy dữ liệu từ d4
print ( d5 ) # {'tên': 'nam', 'sđt': 0}
d6 = dict () # tạo từ điển rỗng
print ( d6 ) # {}
Trang 7Dictionary (từ điển)
▪ Python cũng cho phép tạo từ điển bằng bộ suy diễn từ
điển, với cú pháp tương tự như bộ suy diễn danh sách
▪ Ví dụ: tạo từ điển gồm các bộ khóa là số tự nhiên nhỏ
hơn N và giá trị tương ứng là lập phương của nó
n = int ( input ( 'N = ' ))
d = { i : i * i * i for i in range ( n ) }
print ( d )
▪ Ví dụ: tạo từ điển có khóa các ký tự xuất hiện trong từ S
và giá trị là số lần xuất hiện của ký tự đó trong S
S = input ( 'N = ' )
d = { w : S count ( w ) for w in S }
print ( d )
Trang 8Dictionary (từ điển)
▪ Chú ý: chỉ những loại dữ liệu immutable (không thể thay
đổi) mới có thể dùng làm key của từ điển
dic = { (1,2,3):"abc", 3.1415:"abc"}
dic = { [1,2,3]:"abc"} # lỗi
▪ Một số phép toán / phương thức thường dùng
▪ len(d) : trả về độ dài của từ điển (số cặp key-value)
▪ del d[k] : xóa key k (và value tương ứng)
▪ k in d : trả về True nếu có key k trong từ điển
▪ k not in d : trả về True nếu không có key k trong từ điển
▪ pop(k) : trả về value tương ứng với k và xóa cặp này đi
▪ popitem() : trả về (và xóa) một cặp (key, value) tùy ý
Trang 9Dictionary (từ điển)
▪ Một số phép toán / phương thức thường dùng
▪ get(k) : lấy về value tương ứng với key k
• Khác phép [] ở chỗ get trả về None nếu k không phải là key
▪ update(w) : ghép các nội dung từ từ điển w vào từ điển hiện tại (nếu key trùng thì lấy value từ w)
▪ items() : trả về list các cặp (key, value)
▪ keys() : trả về các key của từ điển
▪ values() : trả về các value của từ điển
▪ pop(k) : trả về value tương ứng với k và xóa cặp này đi
▪ popitem() : trả về (và xóa) một cặp (key, value) tùy ý
Trang 11Truy xuất dữ liệu theo khóa
▪ Từ điển cho phép lấy giá trị tương ứng với khóa k bằng
phương thứ get(k), nhưng có thể dùng chỉ mục thuận
tiện hơn nhiều
print ( 'd.get(3) = ' , d get ( 3 )) # d.get(3) = three print ( 'd[3] = ' , d [ 3 ]) # d[3] = three
print ( 'd.get(9) = ' , d get ( 9 )) # d.get(9) = None print ( 'd[9] = ' , d [ 9 ]) # KeyError
d [ 3 ] = 'ba' # cập nhật cặp 3: 'three' thành 3: 'ba'
print ( d ) # {1: 'one', 2: 'two', 3: 'ba', 4: 'bốn'}
▪ Chú ý: hai cách này không tương đương Khi dữ liệu
không có trong từ điển, get(k) trả về None còn chỉ mục phát sinh ngoại lệ KeyError
Trang 12Xóa dữ liệu trong từ điển
▪ Python có nhiều cách để xóa dữ liệu trong từ điển hoặc
lấy dữ liệu ra khỏi từ điển
▪ Các phương thức pop, popitem, clear được thiết kế cho
những tình huống lập trình khác nhau
del d [ 1 ] # xóa bỏ mục 1: 'one'
print ( d ) # {3: 'three', 2: 'two', 0: 'zero'} print ( d pop ( 2 )) # 'two'
print ( d popitem ()) # (0, 'zero')
d clear () # xóa rỗng từ điển
Trang 13Kiểm tra dữ liệu trong từ điển
▪ Phép kiểm tra dữ liệu trong từ điển chỉ làm việc với khóa
# kiểm tra có 2 trong từ điển không? True
Trang 14Duyệt dữ liệu trong từ điển
▪ Python cung cấp nhiều phương thức lấy về các nhóm dữ
liệu trong từ điển, ta có thể dễ dàng duyệt chúng với
vòng lặp for
d = { 1 : 'one' , 3 : 'three' , 2 : 'two' , 0 : 'zero' }
# duyệt từ điển theo khóa: 1, 3, 2, 0
for i in d: print (i)
# duyệt từ điển theo khóa: 1, 3, 2, 0
for i in d.keys(): print (i)
# duyệt theo cặp khóa-giá trị: (1, 'one'), (3, 'three'),
for i in d.items(): print (i)
# duyệt theo giá trị: 'one', 'three', 'two', 'zero'
for i in d.values(): print (i)
Trang 15Module và Package
Phần 2
Trang 16bản để tái sử dụng lại mã nguồn
▪ Cú pháp: import <tên-module>
▪ Có thể import cùng lúc nhiều module cách nhau bởi dấu phẩy
▪ Nếu muốn sử dụng các hàm, biến trong module thì cần viết
tường minh tên module đó
▪ Có thể import riêng một hoặc nhiều hàm từ một module, cú pháp: from <tên-module> import fuc1, fuc2,… fucN
Trang 17▪ Giải quyết tranh chấp định danh của thư viện khác nhau
▪ Python có rất nhiều các package hỗ trợ mọi nhu cầu xử lý
Trang 18Module math
▪ Một module rất thông dụng của python: import math
▪ Math có nhiều hằng số định nghĩa sẵn:
▪ pi : 3.141592…
▪ e : 2.718281…
▪ tau : 6.283185… (2 * pi)
▪ inf : dương vô cùng (âm vô cùng là –math.inf)
▪ nan : not a number (tương đương với float('nan'))
▪ Math chứa nhiều hàm toán học:
▪ ceil (x): trả về số nguyên nhỏ nhất nhưng không nhỏ hơn x
▪ copysign (x, y): copy dấu của y gán sang x
• Ví dụ: copysign(1.0, -0.0) trả về -1
▪ fabs (x): trả về trị tuyệt đối của x
Trang 19Module math
▪ Math chứa nhiều hàm toán học (tiếp…):
▪ factorial (x): trả về x!
▪ floor (x): trả về số nguyên lớn nhất nhưng không vượt quá x
▪ gcd (a, b): trả về ước số chung lớn nhất của a và b
▪ isinf (x): trả về True nếu x là dương/âm vô cùng
▪ isnan (x): trả về True nếu x là NaN (not a number)
▪ trunc (x): trả về phần nguyên của x
Trang 20Module math
▪ Math cung cấp một số hàm lượng giác:
▪ degrees (x): chuyển x từ radians sang độ
▪ radians (x): chuyển x từ độ sang radians
▪ acos (x): trả về arc cos x (độ đo radians)
▪ asin (x): trả về arc sin x (độ đo radians)
▪ atan (x): trả về arc tang x (độ đo radians)
▪ cos (x): trả về cos x (độ đo radians)
▪ sin (x): trả về sin x (độ đo radians)
▪ tan (x): trả về tang x (độ đo radians)
Trang 21Bài tập
Phần 4
Trang 22Bài tập
Trang 23Bài tập