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!
LẬP TRÌNH PYTHON Bài 7: Kiểu liệu từ điển, module package Tóm tắt nội dung trước ▪ Python có kiểu liệu tập hợp (set) lấy cảm hứng từ tập hợp tốn học Set có hai đặc điểm chính: ▪ Các liệu bên đơi khác ▪ Chỉ chứa liệu loại bất biến (immutable) ▪ Tập hợp khơng có tính thứ tự, khơng có phép tốn mục cắt lát, duyệt phần tử tập hợp for ▪ Python cung cấp nhiều phương thức, phép so sánh phép tốn hữu ích cho tập hợp ▪ Tập tĩnh (frozenset) tập hợp bất biến, thay đổi sau khởi tạo xong TRƯƠNG XUÂN NAM Nội dung Dictionary (từ điển) Module Package ▪ Module math Bài tập TRƯƠNG XUÂN NAM Phần Dictionary (từ điển) TRƯƠNG XUÂN NAM Dictionary (từ điển) ▪ Từ điển sống: mục từ tra cứu ngữ nghĩa ▪ Các mục từ thứ tự ▪ Các mục từ thường khác nhau, số từ điển cho phép mục từ lớn chia thành nhiều mục từ ▪ Dictionary Python lấy cảm hứng từ từ điển sống: ▪ Một mục cặp (pair) khóa (key) giá trị (value) • Tương đương với khái niệm mục từ ngữ nghĩa từ điển thơng thường ▪ Các khóa (key) khơng trùng nhau, xem từ điển loại set ▪ Các khóa khơng thứ tự từ điển thông thường ▪ Chỉ liệu bất biến (immutable) dùng làm khóa TRƯƠNG XUÂN NAM Dictionary (từ điển) ▪ Một cặp từ điển viết dạng : ▪ Từ điển khai báo trực tiếp dùng cú pháp set d1 d2 d3 d4 = = = = { { { { } 1: 'one', 2: 'two' } 'one': 1, 'two': } 'tên': 'nam', 'sđt': 0} # # # # từ từ từ từ điển điển điển điển rỗng cặp số-chuỗi cặp chuỗi-số hỗ hợp ▪ Như Python coi từ điển dạng mở rộng tập hợp ▪ Trường hợp lấy liệu từ nguồn khác, cách thích hợp sử dụng hàm khởi tạo dict() d5 = dict(d4) print(d5) d6 = dict() print(d6) # # # # lấy liệu từ d4 {'tên': 'nam', 'sđt': 0} tạo từ điển rỗng {} TRƯƠNG XUÂN NAM Dictionary (từ điển) ▪ Python cho phép tạo từ điển suy diễn từ điển, với cú pháp tương tự suy diễn danh sách ▪ Ví dụ: tạo từ điển gồm khóa số tự nhiên nhỏ N giá trị tương ứng lập phương 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 ký tự xuất từ S giá trị số lần xuất ký tự S S = input('N = ') d = { w : S.count(w) for w in S } print(d) TRƯƠNG XUÂN NAM Dictionary (từ điển) ▪ Chú ý: loại liệu immutable (khơng thể thay đổi) dùng làm key 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ả độ dài từ điển (số cặp key-value) del d[k]: xóa key k (và value tương ứng) k in d: trả True có key k từ điển k not in d: trả True khơng có key k từ điển pop(k): trả value tương ứng với k xóa cặp popitem(): trả (và xóa) cặp (key, value) tùy ý TRƯƠNG XUÂN NAM Dictionary (từ điển) ▪ Một số phép toán / phương thức thường dùng ▪ get(k): lấy value tương ứng với key k • Khác phép [] chỗ get trả None k key ▪ update(w): ghép nội dung từ từ điển w vào từ điển (nếu key trùng lấy value từ w) ▪ items(): trả list cặp (key, value) ▪ keys(): trả key từ điển ▪ values(): trả value từ điển ▪ pop(k): trả value tương ứng với k xóa cặp ▪ popitem(): trả (và xóa) cặp (key, value) tùy ý TRƯƠNG XUÂN NAM Dictionary (từ điển) ▪ Dùng zip để ghép list thành từ điển >>> l1 = ["a","b","c"] >>> l2 = [1,2,3] >>> c = zip(l1, l2) >>> for i in c: print(i) ('a', 1) ('b', 2) ('c', 3) TRƯƠNG XUÂN NAM 10 Truy xuất liệu theo khóa ▪ Từ điển cho phép lấy giá trị tương ứng với khóa k phương thứ get(k), dùng mục thuận tiện nhiều d = { 1: 'one', 2: 'two', 3: 'three' } 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' d[4] = 'bốn' # thêm cặp 4: 'bốn' print(d) # {1: 'one', 2: 'two', 3: 'ba', 4: 'bốn'} ▪ Chú ý: hai cách khơng tương đương Khi liệu khơng có từ điển, get(k) trả None mục phát sinh ngoại lệ KeyError TRƯƠNG XUÂN NAM 11 Xóa liệu từ điển ▪ Python có nhiều cách để xóa liệu từ điển lấy liệu khỏi từ điển ▪ Các phương thức pop, popitem, clear thiết kế cho tình lập trình khác d = { 1: 'one', 3: 'three', 2: 'two', 0: 'zero' } 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 print(d) # {} TRƯƠNG XUÂN NAM 12 Kiểm tra liệu từ điển ▪ Phép kiểm tra liệu từ điển làm việc với khóa dic = { 1: 'one', 3: 'three', 2: 'two', 0: 'zero' } # kiểm tra có từ điển không? True print(2 in dic) # kiểm tra khơng có 'one' từ điển phải khơng? True print('one' not in dic) # kiểm tra cặp (3, 'three') có từ điển không? False print((3, 'three') in dic) TRƯƠNG XUÂN NAM 13 Duyệt liệu từ điển ▪ Python cung cấp nhiều phương thức lấy nhóm liệu từ điển, ta 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, for i in d: print(i) # duyệt từ điển theo khóa: 1, 3, 2, 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) TRƯƠNG XUÂN NAM 14 Phần Module Package TRƯƠNG XUÂN NAM 15 Module (khối) ▪ Trong python, file mã nguồn xem module ▪ Có phần mở rộng py ▪ Mọi hàm, biến, kiểu file thành phần module ▪ Sử dụng module: ▪ Có thể sử dụng thành phần module khác cách import (nhập/nạp) module đó, phương pháp để tái sử dụng lại mã nguồn ▪ Cú pháp: import ▪ Có thể import lúc nhiều module cách dấu phẩy ▪ Nếu muốn sử dụng hàm, biến module cần viết tường minh tên module ▪ Có thể import riêng nhiều hàm từ module, cú pháp: from import fuc1, fuc2,… fucN TRƯƠNG XUÂN NAM 16 Package (gói) ▪ Package = Thư mục module (lưu trữ vật lý ổ đĩa) import numpy A = array([1, 2, 3]) A = numpy.array([1, 2, 3]) import numpy as np B = np.array([1, 2, 3]) from numpy import array C = array([1, 2, 3]) # lỗi # ok # ok # ok ▪ Module Package giúp quản lý tốt mã nguồn ▪ Nhóm hàm, biến, lớp xử lý chủ đề, giúp phân cấp sử dụng dễ dàng ▪ Giải tranh chấp định danh thư viện khác ▪ Python có nhiều package hỗ trợ nhu cầu xử lý TRƯƠNG XUÂN NAM 17 Module math ▪ Một module thông dụng python: import math ▪ Math có nhiều số định nghĩa sẵn: ▪ ▪ ▪ ▪ ▪ pi: 3.141592… e: 2.718281… tau: 6.283185… (2 * pi) inf: dương vô (âm vô –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ả số nguyên nhỏ không nhỏ x ▪ copysign(x, y): copy dấu y gán sang x • Ví dụ: copysign(1.0, -0.0) trả -1 ▪ fabs(x): trả trị tuyệt đối x TRƯƠNG XUÂN NAM 18 Module math ▪ Math chứa nhiều hàm toán học (tiếp…): ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ factorial(x): trả x! floor(x): trả số nguyên lớn không vượt x gcd(a, b): trả ước số chung lớn a b isinf(x): trả True x dương/âm vô isnan(x): trả True x NaN (not a number) trunc(x): trả phần nguyên x exp(x): trả ex log(x[, y]): trả logy x, mặc định y = e log10(x): trả log10 x pow(x, y): trả xy sqrt(x): trả 𝑥 TRƯƠNG XUÂN NAM 19 Module math ▪ Math cung cấp 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ả arc cos x (độ đo radians) asin(x): trả arc sin x (độ đo radians) atan(x): trả arc tang x (độ đo radians) cos(x): trả cos x (độ đo radians) sin(x): trả sin x (độ đo radians) tan(x): trả tang x (độ đo radians) TRƯƠNG XUÂN NAM 20 Phần Bài tập TRƯƠNG XUÂN NAM 21 Bài tập TRƯƠNG XUÂN NAM 22 Bài tập TRƯƠNG XUÂN NAM 23 Bài tập ▪ ▪ ▪ ▪ ▪ ▪ TRƯƠNG XUÂN NAM 24 ... trả tang x (độ đo radians) TRƯƠNG XUÂN NAM 20 Phần Bài tập TRƯƠNG XUÂN NAM 21 Bài tập TRƯƠNG XUÂN NAM 22 Bài tập TRƯƠNG XUÂN NAM 23 Bài tập ▪ ▪ ▪ ▪ ▪ ▪ TRƯƠNG XUÂN NAM 24 ... thay đổi sau khởi tạo xong TRƯƠNG XUÂN NAM Nội dung Dictionary (từ điển) Module Package ▪ Module math Bài tập TRƯƠNG XUÂN NAM Phần Dictionary (từ điển) TRƯƠNG XUÂN NAM Dictionary (từ điển) ▪... package hỗ trợ nhu cầu xử lý TRƯƠNG XUÂN NAM 17 Module math ▪ Một module thông dụng python: import math ▪ Math có nhiều số định nghĩa sẵn: ▪ ▪ ▪ ▪ ▪ pi: 3.141592… e: 2 .71 8281… tau: 6.283185… (2