Tìm hiểu Tuple trong Python, phân biệt Tuple và List

Ở bài viết này, chúng ta sẽ cùng đi tìm hiểu về Tuple trong Python, cách sử dụng chúng như thế nào, và sự khác biệt giữa Tuple và List là gì? Tất cả những nội dung trong bài đọc sẽ đều có ví dụ minh hoạ cụ thể, hi vọng các bạn đọc có thể dễ dàng theo dõi cũng như tiếp thu được những kiến thức mà mình mong muốn!

1. Tuple là gì trong Python?

Tuple trong Python là một kiểu dữ liệu dùng để lưu trữ các đối tượng có thứ tự và bất biến. Cách lưu trữ của nó cũng khá giống với kiểu dữ liệu List. Tuy nhiên, sự khác biệt giữa List và Tuple, đó là List có thể thay đổi (mutability) trong khi Tuple là bất biến (immutability).

2.  Một số ưu điểm của Tuple so với List

Vì Tuple khá giống với List, nên chúng thường được sử dụng trong các case tương tự nhau. Tuy nhiên, có một số lợi thế nhất định mà một Tuple cung cấp tốt hơn so với một List. Dưới đây là một số ưu điểm chính:

  • Chúng ta thường sử dụng tuple cho các kiểu dữ liệu không đồng nhất và sử dụng list cho các kiểu dữ liệu đồng nhất.
  • Vì các tuple là bất biến, nên việc lặp qua các phần tử của tuple nhanh hơn so với list.
  • Tuple chứa các phần tử bất biến có thể được sử dụng làm key cho dictionary. Trong khi đó, list lại không thể làm được điều này.
  • Nếu bạn có dữ liệu không thay đổi, việc triển khai nó dưới dạng tuple sẽ đảm bảo rằng nó sẽ được chống ghi (write-protected).

3. Tạo một Tuple

Tuple thường được sử dụng cho các dữ liệu không cho phép sửa đổi. Chúng được tạo ra bằng cách đặt tất cả các items/elements bên trong dấu ngoặc đơn () và được phân tách bằng dấu phẩy , .

# Different types of tuples

# Empty tuple
my_tuple = ()
print(my_tuple)

# Tuple having integers
my_tuple = (1, 2, 3)
print(my_tuple)

# tuple with mixed data types
my_tuple = (1, "Hello", 3.4)
print(my_tuple)

# nested tuple
my_tuple = ("mouse", [8, 4, 6], (1, 2, 3))
print(my_tuple)

Output:

()

(1, 2, 3)

(1, 'Hello', 3.4)

('mouse', [8, 4, 6], (1, 2, 3))

Một Tuple cũng có thể được tạo mà không cần sử dụng dấu ngoặc đơn, được gọi là tuple packing.

my_tuple = 3, 4.6, "dog"
print(my_tuple)

# tuple unpacking is also possible
a, b, c = my_tuple

print(a)      # 3
print(b)      # 4.6
print(c)      # dog

Output:

(3, 4.6, 'dog')

3

4.6

dog

Để viết một tuple chứa một giá trị duy nhất, bạn bắt buộc phải thêm một dấu phẩy đằng sau giá trị đó:

my_tuple = ("hello")
print(type(my_tuple))  # <class 'str'>

# Creating a tuple having one element
my_tuple = ("hello",)
print(type(my_tuple))  # <class 'tuple'>

# Parentheses is optional
my_tuple = "hello",
print(type(my_tuple))  # <class 'tuple'>

Output:

<class 'str'>

<class 'tuple'>

<class 'tuple'>

4. Truy cập các phần tử Tuple

Có nhiều cách khác nhau để chúng ta có thể truy cập các phần tử của một tuple.

Index (chỉ mục) của Tuple

Sử dụng toán tử index [] để truy cập vào một phần tử của tuple. Index bắt đầu từ 0, nên một tuple có 6 phần tử sẽ có index từ 0 đến 5. Truy cập vào phần tử có index khác index của tuple sẽ làm phát sinh lỗi IndexError. Index phải là một số nguyên, không thể sử dụng float, hay kiểu dữ liệu khác, sẽ tạo lỗi TypeError.

# Accessing tuple elements using indexing
my_tuple = ('p','e','r','m','i','t')

print(my_tuple[0])   # 'p' 
print(my_tuple[5])   # 't'

# IndexError: list index out of range
# print(my_tuple[6])

# Index must be an integer
# TypeError: list indices must be integers, not float
# my_tuple[2.0]

# nested tuple
n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))

# nested index
print(n_tuple[0][3])       # 's'
print(n_tuple[1][1])       # 4

Output:

p

t

s

4

Index (chỉ mục) âm

Python cho phép lập chỉ mục âm cho các chuỗi. Index -1 là phần tử cuối cùng, -2 là phần tử thứ 2 từ cuối cùng lên,…. Nói đơn giản là index âm dùng khi bạn đếm phần tử của chuỗi ngược từ cuối lên đầu.

# Negative indexing for accessing tuple elements
my_tuple = ('p', 'e', 'r', 'm', 'i', 't')

# Output: 't'
print(my_tuple[-1])

# Output: 'p'
print(my_tuple[-6])

Output:

t

p

Slicing (Cắt lát)

Chúng ta có thể truy cập một loạt các phần tử trong một tuple trong Python bằng cách sử dụng dấu hai chấm : của toán tử cắt (Slicing).

# Accessing tuple elements using slicing
my_tuple = ('p','r','o','g','r','a','m','i','z')

# elements 2nd to 4th
# Output: ('r', 'o', 'g')
print(my_tuple[1:4])

# elements beginning to 2nd
# Output: ('p', 'r')
print(my_tuple[:-7])

# elements 8th to end
# Output: ('i', 'z')
print(my_tuple[7:])

# elements beginning to end
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple[:])

Output:

('r', 'o', 'g')

('p', 'r')

('i', 'z')

('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

5. Thay đổi phần tử Tuple

Không giống như List, Tuple không thể thay đổi. Điều này có nghĩa là các phần tử của một tuple không thể thay đổi một khi đã được gán. Nhưng, nếu bản thân phần tử đó là một kiểu dữ liệu có thể thay đổi (như list chẳng hạn) thì các phần tử lồng nhau có thể được thay đổi. Chúng ta cũng có thể gán giá trị khác cho tuple (gọi là gán lại – reassignment).

# Changing tuple values
my_tuple = (4, 2, 3, [6, 5])


# TypeError: 'tuple' object does not support item assignment
# my_tuple[1] = 9

# However, item of mutable element can be changed
my_tuple[3][0] = 9    # Output: (4, 2, 3, [9, 5])
print(my_tuple)

# Tuples can be reassigned
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple)

Output:

(4, 2, 3, [9, 5])

('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

Ngoài ra, chúng ta có thể sử dụng toán tử + để kết hợp hai tuple, hoặc cũng có thể lặp lại các phần tử trong một tuple với một số lần nhất định bằng cách sử dụng toán tử *. Cả hai phép toán +* đều dẫn đến một tuple mới.

# Concatenation
# Output: (1, 2, 3, 4, 5, 6)
print((1, 2, 3) + (4, 5, 6))

# Repeat
# Output: ('Repeat', 'Repeat', 'Repeat')
print(("Repeat",) * 3)

Output:

(1, 2, 3, 4, 5, 6)

('Repeat', 'Repeat', 'Repeat')

6. Xóa phần tử Tuple

Như đã thảo luận ở trên, chúng ta không thể thay đổi các phần tử trong một tuple. Điều này có nghĩa là, bạn không thể xóa hoặc loại bỏ các giá trị ra khỏi một tuple mà chỉ có thể xóa cả tuple đi mà thôi.

Để xóa một hay nhiều tuple thì chúng ta sử dụng hàm del

# Deleting tuples
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

# can't delete items
# TypeError: 'tuple' object doesn't support item deletion
# del my_tuple[3]

# Can delete an entire tuple
del my_tuple

# NameError: name 'my_tuple' is not defined
print(my_tuple)

Output:

Traceback (most recent call last):

  File "<string>", line 12, in <module>

NameError: name 'my_tuple' is not defined

7. Phương thức dùng với Tuple trong Python

Rõ ràng, phương thức thêm phần tử và xóa phần tử không thể sử dụng với tuple. Tuy nhiên,  có 2 phương thức sau bạn có thể ghi nhớ để sử dụng:

  • count(x): Đếm số phần tử x trong tuple
  • index(x): Trả về giá trị index của phần tử x đầu tiên mà nó gặp trong tuple
my_tuple = ('a', 'p', 'p', 'l', 'e',)

print(my_tuple.count('p'))  # Output: 2
print(my_tuple.index('l'))  # Output: 3

Output

2

3

8. Kiểm tra phần tử trong Tuple

Bạn có thể kiểm tra xem một phần tử đã tồn tại trong tuple hay chưa với từ khóa in.

# Membership test in tuple
my_tuple = ('a', 'p', 'p', 'l', 'e',)

# In operation
print('a' in my_tuple)
print('b' in my_tuple)

# Not in operation
print('g' not in my_tuple)

Output:

True

False

True

9. Lặp qua các phần tử của Tuple trong Python

Sử dụng vòng lặp for để lặp qua các phần tử trong tuple:

# Using a for loop to iterate through a tuple
for name in ('John', 'Kate'):
    print("Hello", name)

Output:

Hello John

Hello Kate


Với nội dung bài viết này, bạn đã phần nào nắm bắt được những nội dung quan trọng về tuple trong Python rồi chứ? Hãy cùng chờ đón những bài viết tiếp theo của Got It về các kiến thức khác trong lập trình nói riêng cũng như công nghệ nói chung nhé!

Nguồn: programiz.com

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

https://d1iv5z3ivlqga1.cloudfront.net/wp-content/uploads/2021/04/29235048/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
November 04, 2021
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
Tìm hiểu Tuple trong Python, phân biệt Tuple và List

Tìm hiểu Tuple trong Python, phân biệt Tuple và List

Ở bài viết này, chúng ta sẽ cùng đi tìm hiểu về Tuple trong Python, cách sử dụng chúng như thế nào, và sự khác biệt giữa Tuple và List là gì? Tất cả những nội dung trong bài đọc sẽ đều có ví dụ minh hoạ cụ thể, hi vọng các bạn đọc có […]
Anaconda là gì? Tìm hiểu nền tảng Khoa học dữ liệu phổ biến nhất

Anaconda là gì? Tìm hiểu nền tảng Khoa học dữ liệu phổ biến nhất

Để có thể tạo nên một ứng dụng của riêng mình, điều quan trọng nhất đó là phải thiết lập môi trường làm việc đúng cách. Vì vậy, bạn cần các công cụ để xử lý dữ liệu, xây dựng các mô hình và biểu diễn trên đồ thị. Việc sử dụng nhiều công cụ […]
Tổng quan về vòng lặp trong Python

Tổng quan về vòng lặp trong Python

Có bao giờ, bạn phải type đi type lại một đoạn code nào đó và cảm thấy vô cùng mất thời gian với việc làm này không? Trong thế giới lập trình có một cách để bạn làm việc này nhanh và hiệu quả hơn. Đó chính là Vòng lặp. Dưới đây, Got It sẽ […]
Tổng quan thư viện NumPy trong Python

Tổng quan thư viện NumPy trong Python

NumPy được biết đến là thư viện xử lý mảng được sử dụng rộng rãi trong Python. Trong bài viết này, Got It sẽ giúp bạn có cái nhìn khái quát nhất về thư viện này nhé! Đọc thêm: Tự học lập trình Python trong 6 tháng Mục lục1. NumPy trong Python là gì?NumPy được […]
5 phần mềm IDE cho Python phổ biến nhất hiện nay

5 phần mềm IDE cho Python phổ biến nhất hiện nay

IDE (Integrated Development Environment) là môi trường tích hợp dùng để phát triển phần mềm giúp bạn lập trình tốt hơn. Tuy nhiên, lựa chọn được một IDE phù hợp không phải việc dễ dàng gì, đặc biệt là IDE cho Python. Bài viết này, Got It xin giới thiệu với bạn đọc 5 phần […]
Mảng là gì? Cách sử dụng mảng trong Python

Mảng là gì? Cách sử dụng mảng trong Python

Mảng trong Python là loại cấu trúc dữ liệu có thể chứa nhiều giá trị cùng kiểu. Thông thường, chúng bị hiểu sai thành các lists hoặc mảng Numpy. Về mặt kỹ thuật, mảng trong Python khác với cả hai khái niệm trên. Trong bài viết này, hãy cùng tìm hiểu xem mảng trong Python […]