Bà 9: Các thao tác và phương thức xử lý với Tuple

Như tất cả các bạn đã quen thuộc với danh sách trong bất kỳ ngôn ngữ lập trình nào khác, trong Python, chúng ta có một tập dữ liệu nữa, đó là tuple. Bộ tuple tương tự như một danh sách nơi chúng ta có thể lưu trữ nhiều loại giá trị chuỗi, số nguyên, số thức hoặc bất kỳ giá trị nào khác. Việc khởi tạo,sử dụng các phương thức xử lý với tuple cũng hết sức đơn giản.

Danh mục bài học Python

Tuple trong Python là gì?

Tuple trong Python là cấu trúc dữ liệu dạng danh sách. Khác với mảng, Tuple chứa các giá trị khác nhau và không nhất thiết phải cùng kiểu dữ liệu. Các phần tử trong Tuple được phân cách nhau bởi dấu phẩy. Tất cả chúng được đặt trong cặp dấu ngoặc đơn mở ( và đóng ). Sau đây chúng ta cùng tìm hiểu về các thao tác và phương thức xử lý với Tuple.

Ví dụ:

Tup = ('Jan', 'feb', 'March')

Cú pháp Tuple

 # Khởi tạo một bộ tup1 với bộ giá trị rỗng
 tup1 = () 
 print(tup1)
 # Kết quả khi thực hiện lệnh print(tup1)
  ()

 # Bộ tup2 được khởi gán với các giá trị là số nguyên
 tup2 = (21, 1995, 3) 
 print(tup2)
 # Kết quả khi thực hiện lệnh print(tup2)
 (21, 1995, 03) 

 # Bộ tup3 với các phần tử khác nhau về kiểu dữ liệu
 tup3 = (1, "Python", 1.56) 
 print(tup3)
 # Kết quả khi thực hiện lệnh print(tub3)
(1, "Python", 1.56) 

Để viết tuple cho một giá trị duy nhất, bạn cần phải bao gồm dấu phẩy, mặc dù có một giá trị duy nhất. 

# Tạo một tuple T có một phần tử, và lưu ý không có dấu phẩy
T = ("Hi")
print(type(T)) --> Kết quả trả về là <class 'str'>

# Tạo một tuple T có một phần tử, kèm theo dấu phẩy 
T = ("Hi",)
print(type(T)) --> Kết quả trả về là <class 'tuple'>

# Tuple T không có cặp dấu ngoặc đơn mở và đóng, nhưng có dấu phẩy
T = "Hi",
print(type(T)) --> Kết quả trả về là <class 'tuple'>

Tuples lồng nhau

n_tup = ("Packing", "Making", ( 5,4,7,9 ), [ 10,20,30,40 ] )
print(n_tup[2]) --> Kết quả (5,4,7,9)
print(n_tup[2][3]) --> Kết quả là 9
print(n_tup[3][5]) --> Hiển thị lỗi do vượt quá phạm vi (phần tử thứ 5 không tồn tại)

Phép gán Tuple

Python có tính năng gán tuple cho phép bạn gán nhiều biến cùng một lúc. Ở đây, bộ tuple 1 được gán với thông tin người như tên, họ, năm sinh, v.v. và bộ tuple 2 khác với các giá trị trong đó như số (1,2,3,…., 7).

Ví dụ: (tên, họ, năm sinh, bộ phim yêu thích và năm, nghề nghiệp, nơi sinh) = Robert

tup1 = ('Robert', 'Carlos', '1965', 'Kẻ hủy diệt 1995', 'Diễn viên', 'Florida');
tup2 = (1,2,3,4,5,6,7);
print(tup1[0])
print(tup2[1:4])
  • Tuple 1 bao gồm danh sách thông tin của Robert
  • Tuple 2 bao gồm danh sách các số
  • Gọi lệnh print(tup1[0]): lấy giá trị ở vị trí 0 (vị trí bắt đầu) trong tup1 --> Kết quả: Robert
  • Gọi lệnh print(tub2[1:4]: lấy giá trị ở vị trí từ 1 với (4-1) phần tử trong tub2 --> Kết quả: 2,3,4
  • Các bạn có thể thay đổi các giá trị chỉ mục để hiểu thêm về cách khai thác giá trị trong tuple

Nếu bạn có tup = (10, 20, 30, 40,) thì lập chỉ mục là:  tup [0] = 10, tup [1] = 20, tup [2] = 30, tup [3] = 40.

Đóng gói và giải nén tuple trong Python

Khi đóng gói, chúng ta đặt giá trị vào một bộ giá trị, trong khi giải nén, chúng ta trích xuất các giá trị đó trở lại thành các biến.

# tuple đóng gói
x = ("IBM", 20, "Máy tính") 

# tuple giải nén
(company, emp, profile) = x 

print(company) --> Kết quả: IBM
print(emp) --> Kết quả: 20
print(profile) --> Kết quả: Máy tính

So sánh các bộ giá trị

Toán tử so sánh trong Python có thể hoạt động với các bộ giá trị.

Việc so sánh bắt đầu với một phần tử đầu tiên của mỗi bộ giá trị. Việc kiểm tra so sánh với các phép =, < hoặc >. Nó bắt đầu bằng việc so sánh phần tử đầu tiên từ mỗi bộ giá trị.

#Ví dụ 1

a = (5,6)
b = (1,4)
if (a>b): print("a lớn hơn b")
else: print("b lớn hơn a")
--> Kết quả: a lớn hơn b

#Ví dụ 2

a = (5,6)
b = (5,7)
if (a>b): print("a lớn hơn b")
else: print("b lớn hơn a")
--> Kết quả: b lớn hơn a

#Ví dụ 3

a = (5,6)
b = (6,4)
if (a>b): print("a lớn hơn b")
else: print("b lớn hơn a")
  • Trường hợp 1:  So sánh bắt đầu với phần tử đầu tiên của mỗi bộ giá trị. Trong trường hợp này 5>1, do đó kết quả: a lớn hơn b
  • Trường hợp 2: So sánh bắt đầu với một phần tử đầu tiên của mỗi bộ giá trị. Trong trường hợp này, 5>5 là không thể kết luận. Vì vậy, nó tiến tới phần tử tiếp theo: 6<7, vì vậy kết quả b lớn hơn a
  • Trường hợp 3: So sánh bắt đầu với phần tử đầu tiên của mỗi bộ giá trị. Trong trường hợp này, 5>6 là sai. Vì vậy, nó rẽ nhánh sang điều kiện (else) và in ra “b lớn hơn a.”

Xóa Tuples

Như trong chủ đề trước, chúng ta đã kết luận rằng không thể thay đổi giá trị tuple. Vì vậy, chúng ta cũng không thể xóa các mục của tuple. Nhưng có thể xóa hoàn toàn một tuple bằng cách sử dụng lệnh del

# Khai báo một bộ 
my_tup = (1, 2, 3, 4, 5, 6, [7, 8, 9] )

# Xóa một phần tử trong bộ
 del my_tup[1] 
# Kết quả lỗi vì không thể xóa một phần tử: 'tuple' object doesn't support item deletion 

# Xóa toàn bộ tuple  
del my_tup 
print(my_tup) 
# Kết quả lỗi vì my_tup chưa được định nghĩa (do đã bị xóa): name 'my_tup' is not defined

Cắt phạm vi Tuple

Chúng ta có thể truy cập phạm vi của các phần tử trong tuple. Toán tử “:” dấu hai chấm được sử dụng để cắt phạm vi các phần tử trong bộ giá trị.

x = ("a", "b", "c", "d", "e")
print(x [2:4])

Đầu ra của mã này sẽ là (‘c’, ‘d’).

# Khai báo một tuple
tup1 = ('p','a','c','k','k1','k','i','n','g','z')

# Hiển thị từ vị trí thứ 2 (1) đến vị trí thứ 4
print(tup1[1:4])

# Hiển thị từ vị trí đầu tiên (0) đến vị trí thứ 5 (-4) theo chiều ngược lại
print(tup1[:-4])

# Hiển thị từ vị trí thứ 5 (4) đến cuối cùng
print(tup1[4:])

# Hiển thị từ vị trí đầu tiên đến cuối cùng
print(tup1[:])

Các phương thức xử lý với Tuple

Để thực hiện các tác vụ khác nhau, tuple cho phép bạn sử dụng nhiều hàm tích hợp sẵn như all(), any(), enumerate(), max(), min(), sorted(), len(), tuple(), v.v.

my_tup = ('p', 'a', 'c', 'k', 'k', 'k', 'i', 'n', 'g')

# Sử dụng phương thức count để đếm có bao nhiêu phần tử
print(my_tup.count('k'))

# Kết quả: 
 3 

# Sử dụng index để xác định vị trí đầu tiên của phần tử 
print(my_tup.index('a'))

# Kết quả: 
 1 

# Sử dụng len để xác định chiều dài (số phần tử) của tuple
print(len(my_tup))

# Kết quả:
 9

Kiểm tra sự tồn tại của phần tử trong tuple

Để tìm xem phần tử có tồn tại trong một bộ hay không, sau đó sử dụng các toán tử in hoặc not in

my_tup = ('p', 'a', 'c', 'k', 'k', 'k', 'i', 'n', 'g')

# Sử dụng toán tử in
 print('a' in my_tup) 

# Kết quả: 
True 

print('s' in my_tup) 

# Kết quả: 
False 

# Sử dụng toán tử not in 
print('c'in my_tup) 

# Kết quả: 
True 

Lưu ý: Trong Python có sự phân biệt chữ thường/HOA, để sử dụng đúng từ khóa hoặc toán tử, cần xem lại bài về từ khóa và định danh.