1 | 12 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Bài 14: KIỂU DỮ LIỆU TUPLE TRONG PYTHON Xem học website để ủng hộ Kteam: KIỂU DỮ LIỆU TUPLE TRONG PYTHON Mọi vấn đề lỗi website làm ảnh hưởng đến bạn thắc mắc, mong muốn khóa học mới, nhằm hỗ trợ cải thiện Website Các bạn vui lòng phản hồi đến Fanpage How Kteam nhé! Dẫn nhập Trong trước, Kteam giới thiệu đến bạn KIỂU DỮ LIỆU LIST, container tuyệt vời Python Ở Kteam giới thiệu tới bạn container khác KIỂU DỮ LIỆU TUPLE Python Nội dung Để đọc hiểu tốt bạn cần: Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON Xem qua CÁCH CHẠY CHƯƠNG TRÌNH PYTHON Nắm CÁCH GHI CHÚ BIẾN TRONG PYTHON KIỂU DỮ LIỆU SỐ KIỂU DỮ LIỆU CHUỖI Python KIỂU DỮ LIỆU LIST Python Bạn Kteam tìm hiểu nội dung sau Giới thiệu Tuple Python Cách khởi tạo Tuple Một số toán tử với Tuple Python Copyright © Howkteam.com | 12 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Indexing cắt Tuple Python Thay đổi nội dung Tuple Python Ma trận Tuple có phải ln ln Hash object? Các phương thức Tuple Khi chọn Tuple thay cho List? Giới thiệu Tuple Python Tuple container sử dụng nhiều chương trình Python khơng thua List (List giới thiệu KIỂU DỮ LIỆU LIST TRONG PYTHON) Một Tuple gồm yếu tố sau: Được giới hạn cặp ngoặc (), tất nằm phần tử Tuple Các phần tử Tuple phân cách dấu phẩy (,) Tuple có khả chứa giá trị, đối tượng Python Ví dụ: >>> (1, 2, 3, 4, 5) # Một Tuple chứa số nguyên (1, 2, 3, 4, 5) >>> ('k', 't', 'e', 'r') # Một Tuple chứa chuỗi ('k', 't', 'e', 'r') >>> ([1, 2], (3, 4)) # Một Tuple chứa List [1, 2] Tuple (3, 4) ([1, 2], (3, 4)) >>> (1, 'kteam', [2, 'k9']) # Tuple chứa số nguyên, chuỗi, List (1, 'kteam', [2, 'k9']) Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM | 12 Cách khởi tạo Tuple Sử dụng cặp dấu ngoặc () đặt giá trị bên Cú pháp: (, , , , ) Ví dụ: >>> tup = (1, 2, 3, 4) >>> tup (1, 2, 3, 4) >>> empty_tup = () # khởi tạo tuple rỗng >>> empty_tup () >>> type(tup) # kiểu liệu Tuple thuộc lớp tuple Bạn ý khởi tạo tuple với giá trị >>> tup = (9) # Tuple có giá trị số >>> tup # có kết lạ >>> type(tup) # khơng thuộc lớp Tuple >>> str_tup = ('howkteam') # thử trường hợp khác >>> str_tup 'howkteam' >>> type(tup) Vì khởi tạo Tuple với phần tử kiểu kiểu liệu Tuple lại kiểu liệu phần tử đó? Copyright © Howkteam.com | 12 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Đó bạn viết giá trị đặt cặp dấu ngoặc đơn xem giá trị Vì lại phải xem giá trị? Vì ta tính tốn, hay sử dụng cặp ngoặc () để ưu tiên >>> + * # * sau + nhân trước cộng sau theo toán học >>> (1 + 3) * # thi ta làm phép tính ngoặc trước 12 Thế nên, trường hợp khơng thể tính Tuple Do đó, muốn khởi tạo Tuple phần tử, ta phải thêm dấu `,` vào sau giá trị đó, để báo cho Python biết, Tuple >>> tup = (9,) >>> tup (9,) >>> type(tup) # kết mong đợi Sử dụng Tuple Comprehension Với Tuple khái niệm Comprehension khơng áp dụng >>> tup = (value for value in range(3)) >>> tup Mà coi Generator Expression (Kteam giới thiệu tương lai) Đối tượng tạo từ Generator Expression dạng iterable Copyright © Howkteam.com | 12 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Sử dụng constructor Tuple Cú pháp: tuple(iterable) Cơng dụng: Giống hồn tồn với việc bạn sử dụng constructor List Khác biệt constructor Tuple tạo Tuple >>> tup = tuple([1, 2, 3]) >>> tup (1, 2, 3) >>> str_tup = tuple('KTEAM') >>> str_tup ('K', 'T', 'E', 'A', 'M') >>> generator = (value for value in range(10) if value % == 0) >>> generator # bạn không cần phải cố gắng hiểu chưa rõ comprehension >>> tuple(generator) (0, 2, 4, 6, 8) >>> tuple(123) Traceback (most recent call last): File "", line 1, in TypeError: 'int' object is not iterable Một số toán tử với Tuple Python Các toán tử Tuple giống với toán tử chuỗi Nếu bạn đọc kĩ phần List bạn thấy Kteam đề cập toán tử List gần giống với tốn tử chuỗi Lí giải thích khác biệt tốn tử hash object (immutable chuỗi, Tuple) unhash object (mutable List) Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM | 12 Toán tử + >>> tup = [1, 2] >>> tup += ('how', 'kteam') >>> tup [1, 2, 'how', 'kteam'] Toán tử * >>> tup = tuple('kter') * >>> tup ('k', 't', 'e', 'r', 'k', 't', 'e', 'r', 'k', 't', 'e', 'r') >>> (1,) * () >>> (1,) * (1, 1, 1) Toán tử in >>> in (1, 2, 3) True >>> in ('k', 'kteam', 9) False Indexing cắt Tuple Python Indexing cắt Tuple hoàn toàn tương tự với kiểu liệu List (Nếu chưa biết List bạn tham khảo qua KIỂU DỮ LIỆU LIST TRONG PYTHON) >>> tup = (1, 2, 'a', 'b', [3, 4]) >>> len(tup) # lấy số phần tử có tuple >>> tup[0] Copyright © Howkteam.com | 12 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM >>> tup[-1] [3, 4] >>> tup[3] 'b' >>> tup[1:3] (2, 'a') >>> tup[:2] (1, 2) >>> tup[2:] ('a', 'b', [3, 4]) >>> tup[::-1] ([3, 4], 'b', 'a', 2, 1) Thay đổi nội dung Tuple Python Tuple chuỗi dạng hash object (immutable) Do việc bạn muốn thay đổi nội dung lí thuyết không >>> tup = ('kter', 'howkteam', 69) >>> tup[1] 'howkteam' >>> tup[1] = 'changed' Traceback (most recent call last): File "", line 1, in TypeError: 'tuple' object does not support item assignment Vì lại nói lí thuyết? Bạn biết phần sau Ma trận Nếu bạn nắm vững khái niệm List Thì xin chúc mừng bạn khơng phải đau đầu Nó hồn tồn tương tự Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM | 12 >>> tup = ((1, 2, 3), [4, 5]) >>> tup[0] (1, 2, 3) >>> tup[0][2] >>> tup[1][-2] Tuple có phải ln ln hash object? Như định nghĩa chuỗi, hash object đối tượng bạn thay đổi nội dung Và phần thay đổi nội dung Tuple, bạn thấy ta thay đổi giá trị bên Tuple Tuy nhiên, lúc >>> tup = ([1, 2],) >>> tup[0] [1, 2] >>> tup[0][0] >>> tup[0][1] Giá trị bên tuple List Và, List unhash object Suy ra, ta thay đổi nội dung >>> tup[0][0] >>> tup[0][0] = 'howkteam' >>> tup (['howkteam', 2],) Copyright © Howkteam.com | 12 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Ta thay đổi nội dung Tuple cách thay đổi nội dung phần tử Tuple Vì thế, Tuple coi hash object chứa phần tử hash object Các phương thức Tuple Phương thức count Cú pháp: .count(value) Công dụng: Trả số nguyên, số lần xuất value Tuple >>> tup = (1, 5, 3, 5, 6, 1, 1) >>> tup.count(1) >>> tup.count(4) Phương thức index Cú pháp: .index(sub[, start[, end]]) Copyright © Howkteam.com 10 | 12 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Cơng dụng: Tương tự phương thức index kiểu liệu chuỗi >>> tup = (1, 2, 3) >>> tup.index(2) >>> tup.index(4) Traceback (most recent call last): File "", line 1, in ValueError: is not in list Khi chọn Tuple thay cho List? Tuple khác List chỗ Tuple khơng cho phép bạn sửa chữa nội dung, cịn List có Vì đặc điểm đó, Tuple mạnh List điểm sau: Tốc độ truy xuất Tuple nhanh so với List Dung lượng chiếm nhớ Tuple nhỏ so với List Bảo vệ liệu bạn khơng bị thay đổi Có thể dùng làm key Dictonary (một kiểu liệu giới thiệu) Điều mà List khơng thể List unhash object Những điểm điều giúp bạn cân nhắc việc chọn Tuple hay List để lưu dữ liệu mảng Củng cố học Đáp án trước Bạn tìm thấy câu hỏi phần CÂU HỎI CỦNG CỐ KIỂU DỮ LIỆU LIST TRONG PYTHON – Phần Copyright © Howkteam.com 11 | 12 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Sẽ có lỗi IndexError Traceback (most recent call last): File "", line 1, in IndexError: pop from empty list Khơng Vì đó, ta phải so sánh hai List [1, 2] ['abc', 'def'] Mà so sánh hai List cách trực tiếp Python phải so sánh phần tử hai List với Nhưng bên số, bên chuỗi, nên việc so sánh trực tiếp không >>> lst.sort() Traceback (most recent call last): File "", line 1, in TypeError: '