Bài 4.5. Tuple

Danh sách hoạt động tốt để lưu trữ các tập hợp mục có thể thay đổi trong suốt thời gian tồn tại của một chương trình. Khả năng sửa đổi danh sách đặc biệt quan trọng khi bạn đang làm việc với một danh sách người dùng trên một trang web hoặc một danh sách các nhân vật trong một trò chơi. Tuy nhiên, đôi khi bạn sẽ muốn tạo một danh sách các mục không thể thay đổi. Tuples cho phép bạn làm điều đó. Python gọi các giá trị không thể thay đổi là immutable, và một danh sách không thể thay đổi được gọi là tuple.

Định nghĩa một Tuple

Một tuple trông giống như một danh sách, ngoại trừ bạn sử dụng dấu ngoặc đơn thay vì dấu ngoặc vuông. Khi bạn đã định nghĩa một tuple, bạn có thể truy cập các phần tử riêng lẻ bằng cách sử dụng chỉ số của từng mục, giống như bạn làm với một danh sách.

Ví dụ, nếu chúng ta có một hình chữ nhật luôn có kích thước nhất định, chúng ta có thể đảm bảo rằng kích thước của nó không thay đổi bằng cách đặt các kích thước vào một tuple:

dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])

Chúng ta định nghĩa tuple dimensions, sử dụng dấu ngoặc đơn thay vì dấu ngoặc vuông. Sau đó, chúng ta in ra từng phần tử trong tuple riêng lẻ, sử dụng cùng cú pháp mà chúng ta đã sử dụng để truy cập các phần tử trong một danh sách:

200
50

Hãy xem điều gì xảy ra nếu chúng ta cố gắng thay đổi một trong các mục trong tuple dimensions:

dimensions = (200, 50)
dimensions[0] = 250

Mã này cố gắng thay đổi giá trị của kích thước đầu tiên, nhưng Python trả về một lỗi kiểu. Vì chúng ta đang cố gắng thay đổi một tuple, điều này không thể thực hiện được với loại đối tượng đó, Python cho chúng ta biết rằng chúng ta không thể gán một giá trị mới cho một mục trong một tuple:

Traceback (most recent call last):
  File "dimensions.py", line 2, in <module>
    dimensions[0] = 250
TypeError: 'tuple' object does not support item assignment

Điều này có lợi vì chúng ta muốn Python báo lỗi khi một dòng mã cố gắng thay đổi kích thước của hình chữ nhật.

Lặp qua tất cả các giá trị trong một Tuple

Bạn có thể lặp qua tất cả các giá trị trong một tuple bằng cách sử dụng vòng lặp for, giống như bạn đã làm với một danh sách:

dimensions = (200, 50)
for dimension in dimensions:
    print(dimension)

Python trả về tất cả các phần tử trong tuple, giống như nó làm với một danh sách:

200
50

Ghi đè một Tuple

Mặc dù bạn không thể sửa đổi một tuple, bạn có thể gán một giá trị mới cho một biến đại diện cho một tuple. Ví dụ, nếu chúng ta muốn thay đổi kích thước của hình chữ nhật này, chúng ta có thể định nghĩa lại toàn bộ tuple:

dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
    print(dimension)

dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
    print(dimension)

Bốn dòng đầu tiên định nghĩa tuple ban đầu và in ra các kích thước ban đầu. Sau đó, chúng ta liên kết một tuple mới với biến dimensions và in ra các giá trị mới. Python không báo lỗi lần này, vì việc gán lại một biến là hợp lệ:

Original dimensions:
200
50

Modified dimensions:
400
100

Khi so sánh với danh sách, tuples là các cấu trúc dữ liệu đơn giản. Sử dụng chúng khi bạn muốn lưu trữ một tập hợp các giá trị không nên thay đổi trong suốt thời gian tồn tại của một chương trình.

Làm thêm nhiều bài tập miễn phí tại đây

Comments

There are no comments at the moment.