Hot deal hosting vps vietnix tháng 2Hot deal hosting vps vietnix tháng 2
PHP
Python

Trang chủ

Tìm hiều về tuple trong Python

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
14/02/2025
11 phút đọc
Theo dõi Vietnix trên

Tìm hiều về tuple trong Python

Tuple trong Python là một khái niệm quan trọng, thường xuyên được sử dụng trong nhiều tình huống khác nhau. Kiểu dữ liệu này có những đặc điểm riêng biệt, đóng vai trò không nhỏ trong việc xây dựng và tối ưu hóa các chương trình. Vậy, tuple trong Python thực chất là gì và có những tính năng cơ bản nào? Để có cái nhìn tổng quan và chi tiết, mời bạn theo dõi bài viết dưới đây.

Các điểm chính

Khi đọc xong bài viết, bạn sẽ:

  • Hiểu Rõ Bản Chất Tuple: Nắm vững khái niệm “Tuple là gì?” trong Python, điểm khác biệt so với các kiểu dữ liệu khác như List (danh sách). Bạn sẽ hiểu khi nào nên sử dụng Tuple thay vì List để tối ưu code.
  • Thành Thạo Thao Tác Cơ Bản: Bạn sẽ biết cách tạo Tuple, truy cập các phần tử bên trong, thực hiện các phép toán, cũng như các kỹ thuật indexing (chỉ mục), slicing (cắt) trên Tuple một cách dễ dàng.
  • Làm Chủ Các Hàm Tuple: Bạn sẽ làm quen và sử dụng thành thạo các hàm tích hợp sẵn (built-in functions) thường dùng với Tuple để giải quyết các vấn đề lập trình cụ thể.
  • Ứng Dụng Tuple Trong Thực Tế: Bài viết sẽ gợi ý các tình huống cụ thể mà Tuple tỏ ra hữu ích, từ đó giúp bạn áp dụng kiến thức vào các dự án thực tế của mình.

Tuple trong Python là gì?

Tuple là một trong những kiểu dữ liệu tích hợp sẵn (built-in) trong Python. Một tuple trong Python là một chuỗi các phần tử được phân tách bằng dấu phẩy , nằm trong cặp ngoặc tròn (). Các phần tử trong một tuple không nhất thiết phải cùng kiểu dữ liệu.

Tuple trong Python là một chuỗi các phần tử được phân tách bằng dấu "," và năm trong dấu "()"
Tuple trong Python là một chuỗi các phần tử được phân tách bằng dấu “,” và năm trong dấu “()”

Dưới đây là một vài ví dụ về tuple trong Python:

tup1 = ("An", "Vật lý", 21, 69.75)
tup2 = (1, 2, 3, 4, 5)
tup3 = ("a", "b", "c", "d")
tup4 = (25.50, True, -55, 1 + 2j)

Tuple rỗng được viết bằng hai dấu ngoặc tròn không chứa gì bên trong:

tup1 = ();

Để viết một tuple chỉ chứa một giá trị, bạn phải thêm dấu phẩy vào sau giá trị đó, ngay cả khi chỉ có một giá trị:

tup1 = (50,);

Lưu ý:

  • Trong Python, tuple là một kiểu dữ liệu dạng chuỗi (sequence). Tuple là một tập hợp các phần tử có thứ tự. Mỗi phần tử trong tuple có một chỉ số vị trí duy nhất, bắt đầu từ 0.
  • Trong các ngôn ngữ như C/C++/Java, các phần tử của mảng (array) phải cùng kiểu dữ liệu. Ngược lại, tuple trong Python có thể chứa các đối tượng thuộc nhiều kiểu dữ liệu khác nhau.
  • Cả tupleList trong Python đều là các kiểu dữ liệu dạng chuỗi. Tuy nhiên, điểm khác biệt lớn giữa Listtuple đó là: List có thể thay đổi được (mutable), trong khi tuple thì không thể thay đổi được (immutable). Bạn có thể truy cập bất kỳ phần tử nào của tuple thông qua chỉ số của phần tử đó, nhưng bạn không thể sửa đổi, xóa, hay thêm phần tử vào tuple sau khi tuple đã được tạo.

Truy cập giá trị trong Tuple

Để truy cập các giá trị trong một Tuple, ta sử dụng dấu ngoặc vuông [] để cắt (slicing) Tuple, cùng với chỉ số hoặc các chỉ số để lấy giá trị tại vị trí đó. Ví dụ:

mon_hoc = ('Vật lý', 'Hóa học', 1997, 2000)
so_thu_tu = (1, 2, 3, 4, 5, 6, 7)

print("Phần tử đầu tiên của mon_hoc:", mon_hoc[0])
print("Các phần tử từ 1 đến 4 của so_thu_tu:", so_thu_tu[1:5])

Kết quả khi chạy code:

Phần tử đầu tiên của mon_hoc: Vật lý
Các phần tử từ 1 đến 4 của so_thu_tu: (2, 3, 4, 5)

Giải thích:

  • mon_hoc = ('Vật lý', 'Hóa học', 1997, 2000)so_thu_tu = (1, 2, 3, 4, 5, 6, 7): Khai báo hai Tuple.
  • print("Phần tử đầu tiên của mon_hoc:", mon_hoc[0]): Dòng này truy cập phần tử đầu tiên của Tuple mon_hoc (chỉ số 0) và in phần tử này ra. Lưu ý, chỉ số trong Tuple bắt đầu từ 0.
  • print("Các phần tử từ 1 đến 4 của so_thu_tu:", so_thu_tu[1:5]): Dòng này sử dụng slicing để lấy các phần tử từ vị trí có chỉ số 1 đến chỉ số 4 (không bao gồm 5) của Tuple so_thu_tu.

Cập nhật Tuple trong Python

Tuple là kiểu dữ liệu immutable (bất biến) trong Python. Điều này có nghĩa là bạn không thể cập nhật hoặc thay đổi giá trị của các phần tử bên trong tuple sau khi tuple đã được tạo. Tuy nhiên, bạn có thể trích xuất các phần của các tuple hiện có để tạo ra các tuple mới, như ví dụ sau minh họa:

danh_sach_mon_an_yeu_thich_1 = ("Bún chả", "Phở bò")
danh_sach_mon_an_yeu_thich_2 = ("Bánh mì", "Cơm tấm")

# Hành động sau đây không hợp lệ với tuples
# danh_sach_mon_an_yeu_thich_1[0] = "Xôi"  # Gây ra lỗi

# Thay vào đó, hãy tạo một tuple mới như sau:
danh_sach_mon_an_tong_hop = danh_sach_mon_an_yeu_thich_1 + danh_sach_mon_an_yeu_thich_2
print(danh_sach_mon_an_tong_hop)

Khi thực thi đoạn mã trên, kết quả hiển thị sẽ là:

(‘Bún chả’, ‘Phở bò’, ‘Bánh mì’, ‘Cơm tấm’)

Giải thích Code:

  • danh_sach_mon_an_yeu_thich_1danh_sach_mon_an_yeu_thich_2: được khởi tạo là hai tuples, mỗi tuple chứa tên các món ăn.
  • # danh_sach_mon_an_yeu_thich_1[0] = "Bún bò Huế": Dòng code bị chú thích (#) cho thấy một ví dụ về việc cố gắng thay đổi giá trị của phần tử đầu tiên trong danh_sach_mon_an_yeu_thich_1. Tuy nhiên, do tính chất immutable của tuple, hành động này sẽ gây ra lỗi.
  • Thay vì thay đổi trực tiếp: chúng ta tạo ra một tuple mới danh_sach_mon_an_tong_hop bằng cách sử dụng toán tử cộng (+) để nối hai tuples ban đầu lại với nhau.
  • print(danh_sach_mon_an_tong_hop): sẽ in ra tuple mới, chứa tất cả các món ăn từ cả hai danh sách ban đầu.

Xóa phần tử trong tuple

Việc loại bỏ từng phần tử riêng lẻ trong tuple là không thể thực hiện được. Tuy nhiên, bạn hoàn toàn có thể tạo một tuple mới bằng cách loại bỏ đi các phần tử không mong muốn từ tuple ban đầu.

Để xóa toàn bộ một tuple, bạn chỉ cần sử dụng câu lệnh del. Hãy xem ví dụ sau:

# Tạo một tuple
my_tuple = ('Vật lý', 'Hóa học', 1997, 2000)
print(my_tuple)

# Xóa tuple
del my_tuple

# Thử in tuple sau khi xóa
print("Sau khi xóa my_tuple:")
print(my_tuple)

Kết quả khi chạy đoạn mã trên:

(‘Vật lý’, ‘Hóa học’, 1997, 2000)
Sau khi xóa my_tuple:
Traceback (most recent call last):
File “main.py”, line 8, in
print(my_tuple)
NameError: name ‘my_tuple’ is not defined

Giải thích chi tiết:

  • my_tuple = ('Vật lý', 'Hóa học', 1997, 2000): Dòng này khởi tạo một Tuple có tên là my_tuple, Tuple này chứa các chuỗi và số nguyên.
  • print(my_tuple): Lệnh print này hiển thị nội dung của my_tuple.
  • del my_tuple: Câu lệnh del này xóa hoàn toàn Tuple my_tuple khỏi bộ nhớ.
  • print("Sau khi xóa my_tuple:"): In một thông báo để người đọc biết Tuple vừa được xoá.
  • print(my_tuple): Câu lệnh print này cố gắng truy cập vào Tuple my_tuple, nhưng vì my_tuple đã bị xóa ở bước trên, Python sẽ báo lỗi NameError. NameError chỉ ra rằng một tên biến (trong trường hợp này là my_tuple) không được tìm thấy (không được định nghĩa).

Lưu ý: Có một ngoại lệ (exception) được đưa ra, điều này là do sau khi thực hiện del my_tuple, tuple không còn tồn tại nữa

Các phép toán trên tuple

Trong Python, tuple là một kiểu dữ liệu dạng chuỗi. Do đó, chúng ta có thể nối hai tuple với nhau bằng toán tử +, và nhân bản một tuple nhiều lần bằng toán tử *. Các toán tử kiểm tra phần tử (innot in) cũng hoạt động với đối tượng tuple.

Dưới đây là bảng tóm tắt các phép toán trên Tuple và kết quả:

Biểu Thức PythonKết QuảMô Tả
(1, 2, 3) + (4, 5, 6)(1, 2, 3, 4, 5, 6)Nối hai Tuple.
('Hi!',) * 4('Hi!', 'Hi!', 'Hi!', 'Hi!')Lặp lại Tuple.
3 in (1, 2, 3)TrueKiểm tra phần tử có tồn tại trong Tuple.

Indexing, slicing và ma trận trong tuple

Vì tuple là kiểu dữ liệu dạng chuỗi, các thao tác indexing (truy cập phần tử theo chỉ số) và slicing (cắt/lấy một phần của chuỗi) hoạt động trên tuple tương tự như trên chuỗi.

Hãy xem xét tuple sau:

L = ('spam', 'Spam', 'SPAM!')

Dưới đây là một số biểu thức Python, kết quả và mô tả tương ứng:

Biểu Thức PythonKết QuảMô Tả
L[2]'SPAM!'Chỉ số bắt đầu từ 0.
L[-2]'Spam'Chỉ số âm: đếm ngược từ cuối Tuple.
L[1:]('Spam', 'SPAM!')Slicing lấy các phần tử từ vị trí 1 đến hết.

Không cần dấu ngăn cách rõ ràng

Một tập hợp các đối tượng, được phân tách bằng dấu phẩy, nếu không được đặt trong các ký hiệu nhận dạng (ví dụ: dấu ngoặc vuông [] cho list, dấu ngoặc tròn () cho tuple,…), thì mặc định sẽ được hiểu là một tuple. Hãy xem các ví dụ ngắn sau để thấy rõ điều này:

print('abc', -4.24e93, 18+6.6j, 'xyz')
x, y = 1, 2
print("Giá trị của x, y : ", x, y)

Khi thực thi đoạn code trên, kết quả hiển thị sẽ là:

(‘abc’, -4.24e+93, (18+6.6j), ‘xyz’)
Giá trị của x, y : 1 2

Giải thích chi tiết:

  • Dòng 1: print('abc', -4.24e93, 18+6.6j, 'xyz'): Ở đây, ta có bốn giá trị được truyền vào hàm print(): 'abc', -4.24e93, 18+6.6j, và 'xyz'. Chúng được phân tách bằng dấu phẩy và không được đặt trong bất kỳ dấu ngoặc nào.
  • Do đó, Python tự động coi toàn bộ các giá trị này là một Tuple. Bạn có thể thấy điều này khi kết quả in ra, chúng được bao bởi một dấu ().
  • Dòng 2: x, y = 1, 2: Đây là một cách gán giá trị cho nhiều biến cùng một lúc, gọi là “unpacking”.
  • Phía bên phải dấu =, 1, 2 là một Tuple gồm hai giá trị (vì chúng được phân cách bằng dấu phẩy và không có dấu ngoặc nào bao quanh). Python sẽ lần lượt “gỡ” các giá trị trong tuple này và gán cho các biến xy tương ứng. Do đó, x sẽ có giá trị là 1, và y sẽ có giá trị là 2.
  • Dòng 3: print("Giá trị của x, y : ", x, y): Hàm print nhận các tham số x, y tương ứng là 1, 2.

Các hàm có sẵn để dùng với tuple

Dưới đây là các hàm có sẵn mà chúng ta có thể sử dụng với Tuple:

HàmMô tả
cmp(tuple1, tuple2)So sánh các phần tử của cả hai Tuple. (Không dùng trong Python 3)
len(tuple)Trả về tổng độ dài (số phần tử) của Tuple.
max(tuple)Trả về phần tử có giá trị lớn nhất trong Tuple.
min(tuple)Trả về phần tử có giá trị nhỏ nhất trong Tuple.
tuple(seq)Chuyển đổi một sequence (ví dụ: list) thành Tuple.

Lời kết

Vậy là chúng ta đã cùng nhau khám phá chi tiết về kiểu dữ liệu Tuple trong Python. Từ định nghĩa cơ bản, cách truy cập, cập nhật (một cách gián tiếp), xóa phần tử, các phép toán, indexing, slicing đến những hàm hỗ trợ sẵn có. Hy vọng bài viết này sẽ cung cấp cho bạn một cái nhìn tổng quan và hữu ích về Tuple, giúp bạn áp dụng hiệu quả hơn vào các dự án Python của mình.

Mọi người cũng đọc

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn