Kết nối

[Python] Phần 9: Kiểu dữ liệu bộ (Tuple)

133 lượt xem 
 Cập nhật lần cuối: 13/08/2019 lúc 06:03:38
Thể loại: Lập trình Python 

Bộ (tiếng Anh gọi là tuple) là một kiểu dữ liệu điển hình trong lập trình. Bộ là một chuỗi các giá trị liên tiếp nhau. Theo cách hiểu khác, bộ là một tập hợp các giá trị theo thứ tự và không thể thay đổi. Các giá trị trong bộ có thể có bất kỳ kiểu dữ liệu nào và được lập chỉ mục (đánh số thứ tự) theo kiểu số nguyên (integer). Trong Python, bộ được viết bằng các ngoặc tròn đóng và mở, tuy nhiên bạn cũng có thể định nghĩa bộ là không cần các ngoặc tròn.

Ví dụ đơn giản một bộ được thể hiện bằng biến t và in các giá trị của biến này ra màn hình.

t1 = (1, "dammio", 4.75, "python") # bộ có ngoặc tròn đóng/mở
t2 = 1, "dammio", 4.75, "python" # bộ không có ngoặc tròn đóng/mở
print(t1) # Kết quả: (1, 'dammio', 4.75, 'python')
print(t2) # Kết quả: (1, 'dammio', 4.75, 'python')

Để dễ phân biệt với các kiểu dữ liệu khác, bạn nên sử dụng ngoặc tròn để định nghĩa cho kiểu dữ liệu bộ.

Tạo 1 bộ có 1 phần tử

Để tránh nhầm lẫn với kiểu dữ liệu khác, bạn phải thêm dấu phẩy sau phần tử đầu tiên để tạo 1 bộ chỉ có 1 phần tử. Hãy xét ví dụ sau để hiểu rõ hơn.

t1 = 1,
type(t1) # Kết quả: <class 'tuple'>

t2 = (1,)
type(t2) # Kết quả: <class 'tuple'>

Lưu ý nếu bạn không dùng dấy phẩy ở sau phần tử đầu tiên thì đó không phải là kiểu dữ liệu bộ.

t = ("dammio")
type(t) # Kết quả: <class 'str'>

Tạo bộ với hàm tuple()

Cách thứ hai để tạo 1 bộ đó là bạn chỉ cần dùng hàm tuple(). Ví dụ sau bạn có tạo 1 bộ rỗng không chứa phần tử.

t1 = tuple()
print(t1) #Kết quả: tạo 1 bộ rỗng không có phần tử

Tiếp theo là tạo 1 bộ với mỗi phần tử là các ký tự của chuỗi đầu vào.

t2 = tuple("dammio")
print(t1) #Kết quả: ('d', 'a', 'm', 'm', 'i', 'o')

Truy cập các phần tử trong bộ

Tương tự như các kiểu dữ liệu khác, trong Python bạn có thể dùng nhiều cách khác nhau để truy cập kiểu dữ liệu bộ.

Bạn có thể truy cập phần tử theo chỉ mục (index).

t = ('a', 'b', 'c', 'd', 'e')
print(t[0]) # Kết quả: a

Hoặc có thể truy cập theo đoạn (dãy) với vị trí chỉ mục bắt đầu và kết thúc.

t = ('a', 'b', 'c', 'd', 'e')
print(t[1:3]) # Kết quả: ('b', 'c')

Thay đổi & thêm, xóa các giá trị trong bộ

Khi tạo ra một bộ thì bạn sẽ không thay đổi được giá trị đơn lẻ nào trong bộ bằng phép gán. Ví dụ sau sẽ gây ra lỗi do gán trực tiếp để thay đổi giá trị đầu tiên trong bộ.

t  = ("a", "dammio", "b", "c", "d")
t[0] = "A" #Kết quả: TypeError: 'tuple' object does not support item assignment

Tuy nhiên, bạn có thể thay đổi điều này bằng cách gán một bộ với một đoạn trong bộ. Theo cách này bạn cũng có thể thêm, xóa,… các phần tử trong bộ.

t  = ("a", "dammio", "b", "c", "d")
t = ("A",) + t[1:] # Thay thế phần tử đầu tiên
print(t) # Kết quả: ('A', 'dammio', 'b', 'c', 'd')

t = t[1:] # Xóa phần tử đầu tiên trong bộ
print(t) # Kết quả: ('dammio', 'b', 'c', 'd')

t = t + ("A",) # Thêm phần tử mới ở cuối bộ
print(t)  # Kết quả: ('dammio', 'b', 'c', 'd', 'A')

Bạn cũng có thể xóa hoàn toàn bộ bằng cách dùng toán tử del như sau.

t  = ("a", "dammio", "b", "c", "d")
del t 

Hoán vị các giá trị bộ

Thông thường để hoán vị 2 giá trị bộ cho nhau, bạn phải dùng một biến bộ tạm thứ 3 để làm chỗ chứa tạm thời giống như sau.

temp = t1
t1 = t2
t2 = temp

Tuy nhiên Python cho phép bạn gán theo kiểu thông minh và gọn hơn như sau.

t1, t2 = t2, t1

Bộ sử dụng như giá trị trả về

Kết quả của hàm divmod (chia lấy phần nguyên và phần dư) là một bộ. Vì vậy, bạn có thể sử dụng hàm này để lấy giá trị trong bộ.

t = divmod(7, 3)
print (t) # kết quả: (2, 1)

Duyệt các phần tử trong bộ

Tương tự như kiểu dữ liệu chuỗi & danh sách, bạn chỉ cần dùng toán tử in trong vòng lặp for là có thể duyệt và lấy các giá trị trong bộ như sau.

t = ("dammio", "python", "website")
for x in t:
  print(x)

#Kết quả: 
# dammio
# python
# website

Kiểm tra một giá trị có trong bộ hay không

Bạn có thể kiểm tra hoặc tìm một giá trị có bộ hay không rất đơn giản, bạn cũng chỉ cần dùng mệnh đề if và toán tử in.

t = ("dammio", "python", "website")
if "dammio" in t:
  print("Phan tu dammio co chua trong bo!")

#Kết quả: Phan tu dammio co chua trong bo!

Kiểm tra chiều dài bộ (số lượng phần tử trong bộ

Bạn có thể dùng hàm len() để kiểm tra số lượng các phần tử trong bộ.

t = ("dammio", "python", "website")
print(len(t)) # Kết quả: 3

Phương thức tạo lập tuple()

Bạn có thể tạo phương thức tạo lập tuple() bằng cách dùng 2 dấu ngoặc mở và 2 dấu ngoặc đóng bên trong đó là các giá trị của bộ.

t = tuple(("dammio", "python", "website"))
print (t) # Kết quả: ('dammio', 'python', 'website')

Các phương thức dùng để xử lý bộ

Có nhiều phương thức nữa dùng để thao tác lập trình với bộ như sau:

  • count(): đếm phần tử trong bộ
  • index(): trả về vị trí index của giá trị cần tìm trong bộ
  • any(): kiểu tra nếu bất kỳ giá trị nào trong vòng lặp là true
  • all(): trả về true khi tất cả giá trị trong vòng lặp là true
  • max(), min(), sum(): trả về giá trị lớn nhất, giá trị bé nhất, giá trị tổng
  • max(), min(), sum(): trả về giá trị lớn nhất, giá trị bé nhất, giá trị tổng
  • reversed(): đảo ngược các giá trị trong bộ
  • sorted(): sắp xếp các giá trị trong bộ

Ngoài ra còn có các phương thức như ascii(), bool(), enumerate(), filter(), iter(), map(), slice(), zip(),.. bạn có thể tìm hiểu rõ hơn khi lập trình với Python.

Kết luận

Bài viết đã trình bày cho bạn nhiều kiến thức về kiểu dữ liệu bộ trong Python với hàng loạt ví dụ. Thông thường, kiểu dữ liệu bộ không được sử dụng nhiều bằng các kiểu dữ liệu khác như danh sách, từ điển,… tuy nhiên trong một số trường hợp kiểu dữ liệu bộ cũng rất hữu ích.

Để lại bình luận

avatar
1000
  Theo dõi  
Thông báo của