Giáo trình Python - Bài 7: Kiểu Tuple và set
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Python - Bài 7: Kiểu Tuple và set", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
giao_trinh_python_bai_7_kieu_tuple_va_set.pdf
Nội dung text: Giáo trình Python - Bài 7: Kiểu Tuple và set
- BÀI 7: KIỂU TUPLE VÀ SET
- ĐẶT VẤN ĐỀ § Hàm trả về nhiều giá trị (ví dụ trong bài 5: Hàm) § Chính là trả về một tập hợp các kết quả Þ Lưu trữ tập kết quả như thế nào? Þ Sử dụng các kiểu tập hợp • list • dictionary • tuple • set
- KIỂU TUPLE § Cách tạo tuple § Cách sử dụng tuple § So sánh tuple với các kiểu tập hợp khác
- TUPLE LÀ GÌ? § Tuple là một chuỗi phần tử có thứ tự, cùng kiểu hoặc không cùng kiểu § Truy cập đến các phần tử thông qua chỉ số § Dùng cặp dấu () để biểu thị danh sách phần tử của tuple >>> x = (‘Hoa', ‘Hong', ‘Hanh') >>> print(x[2]) Hanh >>> y = ( 1, 9, 2 ) >>> print(y) (1, 9, 2) >>> print(max(y)) 9
- TẠO TUPLE § Cấu trúc tạo tuple: = (ptu_1, ptu_2, ptu_n) § Có thể có dấu ngoặc hoặc không § Có thể tạo tuple rỗng >>> x = (1,2,3) >>> print(x) (1,2,3) >>> y = 4,5,6 >>> print(x) (4,5,6) >>> z = () >>> print(z) ()
- Tuple TƯƠNG TỰ NHƯ list § Tuple là một chuỗi phần tử có thứ tự, cùng kiểu hoặc không cùng kiểu - tương tự như list. § Các phần tử được đánh chỉ số bắt đầu từ 0 § List dùng cặp ngoặc vuông [], tuple dùng cặp ngoặc tròn () § Cặp dấu ngoặc tròn có thể có hoặc không, quan trọng là dấu phẩy ngăn cách giữa các phần tử >>> x = (‘Hoa', ‘Hong', ‘Hanh') >>> for iter in y: >>> print(x[2]) ... print(iter) Hanh ... >>> y = ( 1, 9, 2 ) 1 >>> print(y) 9 (1, 9, 2) 2 >>> print(max(y)) >>> 9
- ĐẶC ĐIỂM CỦA TUPLE § Chỉ số của các phần tử có thể là hằng số, có thể là biểu thức có kiểu rời rạc § Ví dụ nếu i = 3 thì c[5-2], c[3], c[i] là tương đương nhau § Thường dùng một biến kiểu rời rạc làm chỉ số chạy qua các phần tử của danh sách § Không thể chỉnh sửa
- TUPLE KHÔNG THỂ CHỈNH SỬA § Không giống như list, một khi đã được tạo ra, nội dung (các phần tử) của tuple không thể bị thay đổi § Không thể tạo tuple rỗng, sau đó thêm phần tử (như list) >>> x = [9, 8, 7] >>> y = 'ABC' >>> z = (5, 4, 3) >>> x[2] = 6 >>> y[2] = 'D' >>> z[2] = 0 >>> print(x) Traceback:'str' Traceback:'tuple' >>>[9, 8, 6] object does object does >>> not support item not support item Assignment Assignment >>> >>>
- NHỮNG VIỆC KHÔNG THỂ THỰC HIỆN VỚI TUPLE >>> x = (3, 2, 1) >>> x.sort() Traceback: AttributeError: 'tuple' object has no attribute 'sort' >>> x.append(5) Traceback: AttributeError: 'tuple' object has no attribute 'append' >>> x.reverse() Traceback: AttributeError: 'tuple' object has no attribute 'reverse' >>>
- MỘT SỐ THAO TÁC VỚI TUPLE § Hàm count(): đếm số lần xuất hiện của một giá trị nào đó trong tuple § Hàm index(): trả về vị trí của giá trị nào đó trong tuple >>> t = tuple() >>> dir(t) ['count', 'index’] >>> tup = (‘h’,2,3,4,’h’) >>> tup.count(2) 1 >>> tup.count(‘h’) 2 >>> tup.index(‘h’) 0
- MỘT SỐ TÍNH CHẤT CỦA TUPLE § Tuple hiệu quả: • Vì tính chất không thể chỉnh sửa, tuple đơn giản và hiểu quả về mặt sử dụng bộ nhớ và hiệu năng thực hiện hơn danh sách list • Tuple được chọn sử dụng trOng trường hợp lập trình viên muốn sử dụng các “biến tạm thời”
- VÍ DỤ Ví dụ 7-1. § Viết hàm cho phép người dùng nhập vào tên và điểm trung bình của một sinh viên. § Viết hàm in thông tin sinh viên đã nhập § Sử dụng các hàm đã viết để nhập và in thông tin của một sinh viên
- VÍ DỤ 7.1 def nhap(): ten = input("Hay nhap ten sinh vien:") diem = float(input("Hay nhap diem cua sinh vien: ")) return ten, diem def intt(ten, diem): print("Sinh vien ten", ten, "co diem la", diem) print("Nhap thong tin sinh vien") sv = nhap() print("Thong tin cua sinh vien") intt(sv[0],sv[1])
- TUPLE VÀ PHÉP GÁN § Tuple có thể được dùng làm vế trái của câu lệnh gán § Có thể lược bỏ cặp dấu ngoặc nếu muốn >>> (x, y) = (4, 'fred') >>> print(y) fred >>> (a, b) = (99, 98) >>> print(a) 99
- TOÁN TỬ VỚI TUPLE § Toán tử “+” để nối hai tuple >>> a = ("hoa",10) >>> b = ("hanh",9) với nhau >>> a + b § Toán tử “*” để lặp lại các ('hoa', 10, 'hanh', 9) >>> a*3 phần tử của tuple ('hoa', 10, 'hoa', 10, 'hoa', 10) § Toán tử “in” để kiểm tra >>> a == b một giá trị có trong tuple False >>> a > b hay không True § Các toán tử quan hệ >, >> c = a+b != >>> c>a True >>> c < a False
- TUPLE VÀ TỪ ĐIỂN DICTIONARY Phương thức items() >>> d = dict() của dictionary trả về >>> d['csev'] = 2 một danh sách (list) các >>> d['cwen'] = 4 tuple, mỗi tuple gồm 2 >>> for (k,v) in d.items(): phần tử (key,value) ... print(k, v) ... csev 2 cwen 4 >>> tups = d.items() >>> print(tups) dict_items([('csev', 2), ('cwen', 4)])
- SO SÁNH HAI TUPLE § Các phép toán so sánh (==, >, =..) có thể thực hiện đối với tuple và các kiểu danh sách khác § Cơ chế so sánh: So sánh lần lượt từng phần tử cho đến khi gặp phần tử đầu tiên khác nhau >>> (0, 1, 2) < (5, 1, 2) True >>> (0, 1, 2000000) < (0, 3, 4) True >>> ( 'Jones', 'Sally' ) < ('Jones', 'Sam') True >>> ( 'Jones', 'Sally') > ('Adams', 'Sam') True
- SẮP XẾP DANH SÁCH TUPLE § Có thể sử dụng hàm sorted đối với danh sách (list) tuple để tạo ra một từ điển được sắp xếp như sau: • TạO ra một list các tuple bằng phương thức items() của lớp từ điển • Sử dụng hàm sorted() để sắp xếp danh sách vừa thu được >>> d = {'a':10, 'b':1, 'c':22} >>> d.items() dict_items([('a', 10), ('c', 22), ('b', 1)]) >>> sorted(d.items()) [('a', 10), ('b', 1), ('c', 22)]
- SỬ DỤNG sorted() Có thể d.items() làm >>> d = {'a':10, 'b':1, 'c':22} tham số trực tiếp >>> t = sorted(d.items()) >>> t trong hàm sorted [('a', 10), ('b', 1), ('c', 22)] >>> for k, v in sorted(d.items()): ... print(k, v) ... a 10 b 1 c 22
- SẮP XẾP THEO GIÁ TRỊ § Nếu chúng ta tạo một danh sách các tuple có dạng >>> c = {'a':10, 'b':1, 'c':22} (khóa, giá trị), khi đó chúng >>> tmp = list() ta có thể sắp xếp danh sách >>> for k, v in c.items() : ... tmp.append( (v, k) ) đó theo giá trị ... § Từ điển thì không thể sắp >>> print(tmp) xếp theo giá trị, chỉ sắp xếp [(10, 'a'), (22, 'c'), (1, 'b')] theo khóa >>> tmp = sorted(tmp, reverse=True) § Sử dụng vòng for để tạo ra >>> print(tmp) một danh sách các tuple [(22, 'c'), (10, 'a'), (1, 'b')]



