Tuple là một loại cấu trúc dữ liệu trong Python, nó là một tập hợp các giá trị không thay đổi (immutable), có thể chứa các giá trị khác nhau nhưng thường được sử dụng để lưu trữ các giá trị có liên quan với nhau. Các giá trị trong một Tuple được phân tách bằng dấu phẩy và được đặt trong cặp ngoặc đơn. Tuple rất hữu ích trong việc truyền thông tin giữa các hàm hoặc các module trong Python và cũng được sử dụng rộng rãi để lưu trữ các tập hợp các giá trị liên quan như tọa độ, ngày tháng, thông tin của một khách hàng, …
Việc tạo ra một tuple đơn giản chỉ là đặt các giá trị phân tách bằng dấu phẩy. Tùy chọn, bạn có thể đặt các giá trị phân tách bằng dấu phẩy này trong ngoặc đơn. Ví dụ:
tup1 = ('vật lý', 'hoá học', 1997, 2000);
tup2 = (1, 2, 3, 4, 5);
tup3 = "a", "b", "c", "d";
Tuple rỗng được viết dưới dạng hai dấu ngoặc đơn không chứa bất kỳ giá trị nào:
tup1 = ();
Để viết một tuple chỉ chứa một giá trị, bạn phải bao gồm một dấu phẩy, ngay cả khi chỉ có một giá trị:
tup1 = (50,);
Giống như chỉ mục của chuỗi (string indices), chỉ mục của tuple bắt đầu từ 0 và chúng có thể được lấy ra, ghép nối, và làm các thao tác tương tự.
Truy cập giá trị trong tuple
Để truy cập giá trị trong tuple, sử dụng dấu ngoặc vuông để chọn phần tử theo chỉ mục hoặc chỉ mục để lấy giá trị có sẵn tại chỉ mục đó. Ví dụ -
tup1 = ('vật lý', 'hoá học', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );
print "tup1[0]: ", tup1[0];
print "tup2[1:5]: ", tup2[1:5];
Khi mã trên được thực thi, nó sẽ cho kết quả sau -
tup1[0]: vật lý
tup2[1:5]: (2, 3, 4, 5)
Cập nhật Tuple
Tuple là bất biến, có nghĩa là bạn không thể cập nhật hoặc thay đổi các giá trị của các phần tử trong tuple. Bạn có thể sử dụng một phần của các tuple hiện có để tạo ra các tuple mới, như ví dụ dưới đây -
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');
# Hành động sau không hợp lệ với tuple
# tup1[0] = 100;
# Vì vậy, hãy tạo một tuple mới như sau
tup3 = tup1 + tup2;
print tup3;
Khi mã trên được thực thi, nó sẽ cho kết quả sau -
(12, 34.56, 'abc', 'xyz')
Xóa các phần tử trong tuple
Không thể xóa các phần tử tuple riêng lẻ. Tất nhiên, không có gì sai với việc sắp xếp một tuple mới với các phần tử không mong muốn bị loại bỏ.
Để xóa rõ ràng toàn bộ tuple, chỉ cần sử dụng lệnh del. Ví dụ:
tup = ('vật lý', 'hoá học', 1997, 2000);
print tup;
del tup;
print "Sau khi xóa tup: ";
print tup;
Điều này cho ra kết quả sau. Có một lỗi, điều này là do sau khi del tup tuple không còn tồn tại nữa -
('vật lý', 'hoá học', 1997, 2000)
Sau khi xóa tup:
Traceback (most recent call last):
File "test.py", line 9, in <module>
print tup;
NameError: name 'tup' is not defined
Các phép toán cơ bản trên Tuple
Tuple phản hồi với các toán tử + và * tương tự như với chuỗi; chúng cũng có nghĩa là ghép nối và lặp lại, ngoại trừ kết quả là một tuple mới, không phải chuỗi.
Biểu thức Python | Kết quả | Mô tả |
---|---|---|
len((1, 2, 3)) | 3 | Độ dài |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | Ghép nối |
(‘Hi!’,) * 4 | (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) | Lặp lại |
3 in (1, 2, 3) | True | Thuộc tính thành viên |
for x in (1, 2, 3): print x | 1 2 3 | Lặp qua từng phần tử của Tuple |
Chỉ số và cắt Tuple
Chỉ số và cắt trong tuple hoạt động tương tự như với xâu kí tự và danh sách, cụ thể:
- Chỉ số được đánh số từ đầu đến cuối với giá trị lần lượt từ 0 đến n-1, trong đó n là số phần tử trong tuple.
- Chỉ số được đánh số từ cuối đến đầu với giá trị lần lượt từ -1 đến -n, trong đó n là số phần tử trong tuple.
Ví du:
my_tuple = ('apple', 'banana', 'cherry', 'orange')
print(my_tuple[0]) # apple
print(my_tuple[1]) # banana
print(my_tuple[2]) # cherry
print(my_tuple[3]) # orange
print(my_tuple[-1]) # orange
print(my_tuple[-2]) # cherry
print(my_tuple[-3]) # banana
print(my_tuple[-4]) # apple
Cắt tuple (tuple slicing) trong Python là một cách để truy cập vào một phần của tuple bằng cách sử dụng chỉ số của các phần tử trong tuple. Khi cắt tuple, chúng ta tạo ra một tuple con mới chứa các phần tử từ tuple ban đầu.
Cú pháp cắt tuple:
tuple[start:end:step]
Trong đó:
start: chỉ số bắt đầu của phần tuple cần cắt (bao gồm phần tử tại vị trí này) end: chỉ số kết thúc của phần tuple cần cắt (không bao gồm phần tử tại vị trí này) step: bước nhảy giữa các phần tử trong phần tuple cần cắt (mặc định là 1 nếu không được chỉ định) Lưu ý rằng chỉ số của các phần tử trong tuple bắt đầu từ 0.
Ví dụ:
my_tuple = ('apple', 'banana', 'cherry', 'orange')
print(my_tuple[0:2]) # ('apple', 'banana')
print(my_tuple[1:3]) # ('banana', 'cherry')
print(my_tuple[2:4]) # ('cherry', 'orange')
print(my_tuple[0:4:2]) # ('apple', 'cherry')
print(my_tuple[::2]) # ('apple', 'cherry')
print(my_tuple[::-1]) # ('orange', 'cherry', 'banana', 'apple')
Không có các ký hiệu bao quanh
Bất kỳ tập hợp nhiều đối tượng, được phân tách bằng dấu phẩy, được viết mà không có các ký hiệu nhận dạng, ví dụ, dấu ngoặc vuông cho danh sách, dấu ngoặc đơn cho Tuple, vv, mặc định là Tuple, như được chỉ ra trong các ví dụ ngắn sau đây:
print 'abc', -4.24e93, 18+6.6j, 'xyz';
x, y = 1, 2;
print "Value of x , y : ", x,y;
Khi chạy đoạn mã trên được chạy sẽ cho kết quả sau -
abc -4.24e+93 (18+6.6j) xyz
Value of x , y : 1 2
Các hàm Tuple tích hợp sẵn
Python có các hàm Tuple sau đây:
Tên hàm | Giải thích | Ví dụ |
---|---|---|
cmp(tuple1, tuple2) | So sánh các phần tử của hai Tuple. | cmp((1, 2, 3), (3, 2, 1)) trả về -1 |
len(tuple) | Trả về độ dài của Tuple. | len(('spam', 'egg', 'bacon')) trả về 3 |
max(tuple) | Trả về phần tử có giá trị lớn nhất trong Tuple. | max((1, 2, 3)) trả về 3 |
min(tuple) | Trả về phần tử có giá trị nhỏ nhất trong Tuple. | min((1, 2, 3)) trả về 1 |
tuple(seq) | Chuyển đổi một danh sách thành Tuple. | tuple([1, 2, 3]) trả về (1, 2, 3) |
Bình luận