Bài 14: Kiểu dữ liệu Tuple trong Python
Gửi bởi: Phạm Thọ Thái Dương 20 tháng 11 2020 lúc 10:25:00 | Được cập nhật: hôm qua lúc 22:00:01 Kiểu file: DOC | Lượt xem: 228 | Lượt Download: 0 | File size: 0.39168 Mb
Nội dung tài liệu
Tải xuống
Link tài liệu:
Các tài liệu liên quan
- Bài 1: Giới thiệu ngôn ngữ lập trình python
- Bài 2: Cài đặt môi trường phát triển Python
- Bài 3: Chạy chương trình Python
- Bài 4: Cách ghi chú trong Python
- Bài 5: Biến trong Python
- Bài 6: Kiểu dữ liệu số trong Python
- Bài 7: Kiểu dữ liệu Chuỗi trong Python - Phần 1
- Bài 8: Kiểu dữ liệu Chuỗi trong Python - Phần 2
- Bài 9: Kiểu dữ liệu Chuỗi trong Python - Phần 3
- Bài 10: Kiểu dữ liệu chuỗi trong Python - Phần 4
Có thể bạn quan tâm
Thông tin tài liệu
KHÓA PYTHON CƠ BẢN
HOWKTEAM.COM
1|12
Bài 14: KIỂU DỮ
LIỆU TUPLE TRONG
PYTHON
Xem bài học trên website để ủng hộ Kteam: KIỂU DỮ LIỆU TUPLE TRONG
PYTHON
Mọi vấn đề về lỗi website làm ảnh hưởng đến bạn hoặc 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 các bài trước, Kteam đã giới thiệu đến bạn KIỂU DỮ LIỆU
LIST, một container tuyệt vời trong Python
Ở bài này Kteam sẽ giới thiệu tới bạn một container khác đó chính
KIỂU DỮ LIỆU TUPLE trong Python
Nội dung
Để đọc hiểu bài này tốt nhất bạn cần:
Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON.
Xem qua bài CÁCH CHẠY CHƯƠNG TRÌNH PYTHON.
Nắm CÁCH GHI CHÚ và BIẾN TRONG PYTHON.
KIỂU DỮ LIỆU SỐ và KIỂU DỮ LIỆU CHUỖI trong Python.
KIỂU DỮ LIỆU LIST trong Python
Bạn và Kteam sẽ cùng tìm hiểu những nội dung sau đây
Giới thiệu về Tuple trong Python.
Cách khởi tạo Tuple.
Một số toán tử với Tuple trong Python.
Copyright ©
Howkteam.com
2|12
KHÓA PYTHON CƠ BẢN
HOWKTEAM.COM
Indexing và cắt Tuple trong Python.
Thay đổi nội dung Tuple trong Python.
Ma trận.
Tuple có phải luôn luôn là một Hash object?
Các phương thức của Tuple.
Khi nào thì chọn Tuple thay cho List?
Giới thiệu về Tuple trong
Python
Tuple là một container cũng được sử dụng rất nhiều trong các
chương trình Python không thua kém gì List. (List đã được giới thiệu
trong bài KIỂU DỮ LIỆU LIST TRONG PYTHON)
Một Tuple gồm các yếu tố sau:
Được giới hạn bởi cặp ngoặc (), tất cả những gì nằm trong đó
là những phần tử của Tuple.
Các phần tử của Tuple được phân cách nhau ra bởi dấu phẩy
(,).
Tuple có khả năng chứa mọi giá trị, đối tượng trong Python.
Ví dụ:
>
(1, 2, 3, 4, 5) # Một Tuple chứa 5 số nguyên
(1, 2, 3, 4, 5)
>
('k', 't', 'e', 'r') # Một Tuple chứa 4
chuỗi ('k', 't', 'e', 'r')
>
([1, 2], (3, 4)) # Một Tuple chứa 1 List là [1, 2] và 1 Tuple là (3, 4)
([1, 2], (3, 4))
>
(1, 'kteam', [2, 'k9']) # Tuple chứa số nguyên, chuỗi, và List
(1, 'kteam', [2, 'k9'])
Copyright ©
Howkteam.com
3|12
KHÓA PYTHON CƠ BẢN
HOWKTEAM.COM
Cách khởi tạo Tuple
Sử dụng cặp dấu ngoặc () và đặt giá trị bên
trong
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 dữ liệu Tuple thuộc lớp tuple
Bạn hãy chú ý khi khởi tạo tuple với một giá trị.
>
tup = (9) # Tuple có một giá trị là số 9
>
tup # có kết quả lạ
9
>
type(tup) # không thuộc lớp Tuple
>
str_tup = ('howkteam') # thử một trường hợp khác
>
str_tup
'howkteam'
>
type(tup)
Vì sao khi khởi tạo một Tuple với một phần tử thì kiểu kiểu dữ liệu
của Tuple đó lại là kiểu dữ liệu của phần tử duy nhất đó?
Copyright ©
Howkteam.com
4|12
KHÓA PYTHON CƠ BẢN
HOWKTEAM.COM
Đó là do khi bạn viết một giá trị nào đó đặt trong cặp dấu
ngoặc đơn thì nó được xem là một giá trị.
Vì sao lại phải xem là một giá trị?
Vì khi ta tính toán, hay sử dụng cặp ngoặc () để được ưu tiên.
>
7
>
12
1 + 3 * 2 # 3 * 2 sau đó + 1 vì nhân trước cộng sau theo như toán
học
(1 + 3) * 3 # giờ thi ta sẽ làm phép tính trong ngoặc trước
Thế nên, trường hợp đó không thể tính là một Tuple. Do đó, khi
muốn khởi tạo một Tuple chỉ duy nhất một phần tử, ta phải thêm
dấu `,` vào sau giá trị đó, để báo cho Python biết, đây là Tuple.
>
tup = (9,)
>
tup
(9,)
>
type(tup) # kết quả đã như mong đợi
Sử dụng Tuple Comprehension
Với Tuple thì khái niệm Comprehension này không được áp dụng
>
tup = (value for value in range(3))
>
tup
at 0x039F5D20>
Mà đó được coi là Generator Expression (Kteam sẽ giới thiệu
trong tương lai).
Đối tượng được tạo từ Generator Expression cũng là một dạng
iterable.
Copyright ©
Howkteam.com
5|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 hoàn toàn với việc bạn sử dụng constructor
List. Khác biệt duy nhất là constructor Tuple sẽ tạo ra một 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 % 2 == 0)
>
generator # bạn không cần phải cố gắng hiểu khi chưa rõ
comprehension
at 0x039F5D20>
>
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
trong Python
Các toán tử của Tuple giống với toán tử của chuỗi. Nếu bạn đọc kĩ
phần này ở bài List thì bạn sẽ thấy Kteam đề cập là toán tử của List
chỉ là gần giống với toán tử của chuỗi. Lí do vì sao sẽ được giải thích
trong bài sự khác biệt các toán tử của hash object (immutable như
chuỗi, Tuple) và unhash object (mutable như List)
Copyright ©
Howkteam.com
6|12
KHÓA PYTHON CƠ BẢN
HOWKTEAM.COM
Toán tử +
>
>
>
[1,
tup = [1, 2]
tup += ('how', 'kteam')
tup
2, 'how', 'kteam']
Toán tử *
>
tup = tuple('kter') * 3
>
tup
('k', 't', 'e', 'r', 'k', 't', 'e', 'r', 'k', 't', 'e', 'r')
>
(1,) * 0
()
>
(1,) * 3
(1, 1, 1)
Toán tử in
>
1 in (1, 2, 3)
True
>
4 in ('k', 'kteam', 9)
False
Indexing và cắt Tuple trong
Python
Indexing và cắt Tuple hoàn toàn tương tự như với kiểu dữ liệu List.
(Nếu chưa
biết về List bạn có thể tham khảo qua các bài về KIỂU DỮ LIỆU
LIST TRONG PYTHON)
>
>
5
>
1
tup = (1, 2, 'a', 'b', [3, 4])
len(tup) # lấy số phần tử có trong tuple
tup[0]
Copyright ©
Howkteam.com
7|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 trong Python
Tuple và chuỗi đều là một dạng hash object (immutable). Do
đó việc bạn muốn thay đổi nội dung của nó trên lí thuyết là
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ì sao lại nói là trên lí thuyết? Bạn sẽ biết được ngay ở phần sau.
Ma trận
Nếu bạn nắm vững khái niệm này ở List. Thì xin chúc mừng bạn vì
không phải đau đầu. Nó hoàn toàn tương tự.
Copyright ©
Howkteam.com
8|12
KHÓA PYTHON CƠ BẢN
HOWKTEAM.COM
>
>
(1,
>
3
>
4
tup = ((1, 2, 3), [4, 5])
tup[0]
2, 3)
tup[0][2]
tup[1][-2]
Tuple có phải luôn luôn là một
hash object?
Như đã định nghĩa ở bài chuỗi, một hash object là một đối tượng
bạn không thể thay đổi nội dung của nó. Và trong phần thay đổi nội
dung Tuple, bạn cũng thấy ta không thể thay đổi giá trị ở bên trong
Tuple. Tuy nhiên, không phải lúc nào cũng vậy.
>
>
[1,
>
1
>
2
tup = ([1, 2],)
tup[0]
2]
tup[0][0]
tup[0][1]
Giá trị bên trong tuple đó là một List. Và, List là một unhash
object. Suy ra, ta có thể thay đổi nội dung của nó.
>
tup[0][0]
1
>
tup[0][0] = 'howkteam'
>
tup
(['howkteam', 2],)
Copyright ©
Howkteam.com
9|12
KHÓA PYTHON CƠ BẢN
HOWKTEAM.COM
Ta đã thay đổi nội dung của Tuple bằng một cách đó là thay đổi nội
dung của một phần tử trong Tuple.
Vì thế, một Tuple sẽ được coi là một hash object khi nó chứa các
phần tử đều là hash object.
Các phương thức của Tuple
Phương thức count
Cú pháp:
.count(value)
Công dụng: Trả về một số nguyên, chính là số lần xuất hiện của
value trong Tuple.
>
>
3
>
0
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