python-tuples-la-gi

Tuple trong lập trình Python. Những điều cần biết

Content Protection by DMCA.com

Với anh em nào chưa biết xài Tuple, bài viết này giúp đỡ được, với anh em nào đã xài Tuple và quên té cái giống và khác với List, đọc bài này cũng ổn.

Nói chung là bài viết này dành cho mọi người, mọi trình độ. Đọc vui anh em nhớ ủng hộ nha!. Viết khá cụ thể, giống, khác, ví dụ ví dại rõ ràng đầy đủ.

Bắt đầu ngay thôi nào!

1. Tuple là gì?

Bắt đầu với đặc sản là lướt qua định nghĩa.

A Tuple is also a sequence data type that can contain elements of different data types, but these are immutable in nature. In other words, a tuple is a collection of Python objects separated by commas. The tuple is faster than the list because of static in nature. 

Tuple là kiểu dữ liệu chuỗi bao gồm nhiều các thành phần có kiểu dữ liệu khác nhau, nhưng nó là không thể thay đổi được. Nói một các khác, tuple là một object Collection phân cách nhau bằng dấu phẩy. Tuple nhanh hơn List cũng ở chỗ này, do tĩnh (static) không thể thay đổi được.

Sau định nghĩa thì là syntax, làm gì thì làm vẫn phải lướt qua syntax nha.

Ví dụ này bao gồm nhiều loại tuples lun ha.

# Nhiều loại tuple 

# Empty tuple
tuple_rong = ()
print(tuple_rong)

# Tuple bao gồm toàn số
tuple_toan_so = (1, 2, 3)
print(tuple_toan_so)

# Tuple nhiều loại dữ liệu
tuple_nhieu_loai_du_lieu = (true, "Kieu Chuoi", 5.2)
print(tuple_nhieu_loai_du_lieu)

# Tuple kết hợp nhiều loại
tuple_hon_hop = ("hon hop", [true, false, 6], (9, 2, 3))
print(tuple_hon_hop)

Chỗ nhanh chậm này mình sẽ phân tích kỹ ở mục khác nhau cho anh em. Nhưng mà biết được tuple là immutable rồi thì cái nào không đổi nhớ dùng tuple nha. Không chơi lầy chày cối List nha.

Biết là nhanh nhưng đôi khi cứ chày cối xài List

2. Sử dụng Tuple

2.1 Sử dụng

2.1.1 Phương thức hỗ trợ

Tuple cũng hỗ trợ 2 phương thức chính là count và index. Do tính chất immutable nên chắc chắn không thể có các method add và remove nha.

tuple_phuong_thuc = ('t', 'u', 'p', 'l', 'e', 'e', )

print(tuple_phuong_thuc.count('e'))  # Output: 2
print(tuple_phuong_thuc.index('l'))  # Output: 3

2.1.2 Xóa tuple

Xóa một phần tử trong tuple

# Xóa tuple như thế nào
xoa_tuple = ('x', 'o', 'a', 't', 'a', 't', 'c', 'a')

# Tuple không hỗ trợ xóa phần tử do là immutable
del xoa_tuple[3]

# Nhưng có thể xóa toàn bộ tuple
del xoa_tuple

# Lỗi, xoa_tuple không được định nghĩa
print(xoa_tuple)

2.1.3 Negative index (index âm)

Truy cập với index âm, tuple cho phép access với index âm nha anh em.

# Index âm thì tuple sẽ index từ sau ra trước
tuple_index_am = ('t', 'o', 'p', 'd', 'e', 'v')

# Output: 'v'
print(tuple_index_am[-1])

# Output: 't'
print(tuple_index_am[-6])

2.1.4 Slicing

Tuple cũng hỗ trợ cắt các giá trị trong tuple, lưu ý là lấy giá trị để sử dụng chứ về mặt bản chất là không thay đổi được tuple đã định nghĩa ban đầu nha.

# Truy cập tuple với slicing
my_tuple = ('t','r','u','y','c','a','p','i','z')

# Phần tử 1 cho tới 4, có tổng 3
# Output: ('r', 'u', 'y')
print(my_tuple[1:4])

2.2 Một số lưu ý

Trường hợp chưa muốn định nghĩa giá trị, có thể định nghĩa một Tuple empty như sau:

# Nếu chưa có sẵn các giá trị nhưng vẫn muốn sử dụng tuple, ta có thể thoải mái định nghĩa tuple empty
tuple_empty = ()

Có điều empty thì dễ, nhưng có 1 thì nhớ thêm dấu phẩy (comma) vào nha anh em. Mỗi dấu phẩy thôi nhưng mà quan trọng nha. Không add thì python không hiểu là Tuple đâu á.

# Nếu chưa có sẵn các giá trị nhưng vẫn muốn sử dụng tuple, ta có thể thoải mái định nghĩa tuple empty
tuple_empty = ("kien dep trai",)

Rồi, biết ông đẹp trai rồi, nói hoài. Bài nào cũng ví dụ. Khổ ghê =))). Ví dụ phía trên toàn là cùng kiểu dữ liệu như string hay integers. Lỡ mà tui cần mix nhiều data types (kiểu dữ liệu) với nhau thì được không?.

Được chớ sao không?

You can create a tuple or a list that contains just a sequence of strings, just a sequence of integers, or just a sequence of Boolean values, with each item in the sequence separated by a comma.

Bạn có thể tạo tuple hoặc list bao gồm danh sách các chuỗi, hoặc số, hoặc các giá trị boolean. Chỉ cần các nhau các item bởi dấu phẩy là được
# Với tuple mixed thoải mái nha anh em
my_information = tuple("Kien",27,True,"xau",7,"trai",False)

Rồi đó, vừa lòng chưa =))). Phía trên quên ví dụ quên cái dấu phẩy, nếu thiếu sẽ báo lỗi nha anh em

# Nhớ dấu phẩy (comma) nha anh em
>>>tuple_loi = ("Kie" 50,True,"Blog",50)
File "<stdin>", line 1
    >>>tuple_loi = ("Kie" 50,True,"Blog",50)
    ^
SyntaxError: invalid syntax

3. Giống ghê, giữa tuple và list

Theo như cái định nghĩa cụ thể rõ ràng của Tuple ở phía trên, thì rõ ràng cả hai ông thần Tuple trong python và List trong python đều có thể lưu nhiều giá trị vào duy nhất một biến.

Rõ là thế, điểm giống đầu tiên:

3.1 Cú pháp (syntax)

# List lưu nhiều giá trị trong một biến duy nhất
tuple_1 = ["Hoc", "Python", "Khong", "Khó"]. 

# Tuple cũng lưu nhiều giá trị trong duy nhất 1 biến tuple_2
tuple_2 = ("Hoc", "Python", "Khong", "Khó")

Phía trên là ví dụ về sự giống nhau giữa Tuple và List. Đáng ra sẽ nói vào mục khác nhau, nhưng thôi do khác rành rành ra nên nói luôn ở đây.

The only difference is in the syntax: you create tuples by surrounding the items inside them with opening and closing round brackets, (), whereas lists are denoted and defined by the presence of opening and closing square brackets,[].

Điểm khác biệt rõ ràng dễ nhận ra nhất là cú pháp: với tuple thì ta tạo ra danh sách các phần tử và đóng gói lại trong dấu ngoặc (), trong khi đó list thì định nghĩa các item và sau đó đóng mở trong dấu ngoặc vuông []

3.2 Truy cập (access)

Cả tuple và list đều là ordered collection nha anh em (có thứ tự). Thứ tự này thì không thể thay đổi được ngay sau khi đã tạo ra. Cái này cũng được gọi là định danh duy nhất (unique identifier – index). Cả list và tuple đều bắt đầu với index là 0 cho phần tử đầu tiên, 1 cho phần tử thứ hai.

# Cả List và Tuple đều access bằng index
>>>ten = ("Nguyen","Le","Trung","Kien")

>>>ten[2]
'Le'

>>>ngon_ngu_lap_trinh = ["Python","JavaScript","Java","C"]

>>>ngon_ngu_lap_trinh[0]
'Python'

3.3 Unpacking (bẻ ra – dịch tạm thế nha)

Cả list và tuple sau khi khai báo, anh em có thể phân tích từng item trong đó ra và gán cho các biến khác. Có ví dụ thì dễ phân tích hơn.

# Khai báo tuple trước (không đẹp xấu gì nữa), tên bỏ đi 1 chữ lót, tính Le là chữ lót nha
>>>ten_toi = ("Nguyen","Le","Kien")

# Giờ muốn lấy họ, tên lót và tên ra thành các biến, 3 biến phía dưới nha
>>>ho,ten_lot,ten = ten_toi

>>>ho
'Nguyen'

>>>ten_lot
'Le'

>>>ten
'Kien'

Bóc tách từng giá trị trong tuple và list ra và gán cho các biến khác độc lập thì gọi là unpacking. Cả list và tuple trong Python đều hỗ trợ nha.

4. Ơ thế tuple và list khác nhau gì không?

Xin thưa là có, từ nhỏ bé xinh xinh cho tới lớn lớn cũng xinh xinh. Cái này mình cũng nói ở trên rồi ha. Nho nhỏ nhưng nhớ được thì tốt.

4.1 Mutable và immutabe (thay đổi và không thay đổi)

Đầu tiên cũng là các khác biệt rõ ràng nhất. List thì có thể thay đổi được, nhưng tuple thì không. Một khi đã khai báo tuple thì không thể thay đổi giá trị trong đó.

# List có thể thay đổi được phần tử
list_co_the_doi = [4, 2, 3]
list_co_the_doi[1] = 9

print(list_co_the_doi) = [9, 2, 3]

# Tuple thì cần nha, không cần Python không hiểu
tuple_khong_doi = (4, 2, 3, [6, 5])

# Lỗi, không thể gán giá trị cho tuple
# tuple_khong_doi[1] = 9

4.2 Tốc độ

Do tuple là immutable (không thể thay đổi), nên tốc độ duyệt hoặc lấy theo index của tuple rất nhanh, hơn List.

List chậm hơn so với tuple về cả mặt thời gian và bộ nhớ (memory). Nguồn ảnh / Source: afshin.io
ListTuple
List có thể thay đổi đượcTuple không thể thay đổi được
List tốt hơn về mặt performance ở một số thao tác như insert hoặc deleteTuple chỉ thích hợp để truy vấn các phần tử trong tuple
List tiêu tốn nhiều bộ nhớ hơn Khi so sánh với list, tuple tiêu tốn ít bộ nhớ hơn
Bản thân list có một số phương thức được tích hợp sẵnTuple không có nhiều phương thức định sẵn
Bảng so sánh sự khác biệt giữa Tuple và List

5. Tham khảo thêm về tuple trong python

À anh em xài tuple nhớ đặt tên mục đích nha, như list. Chứ không là phải nhìn value từng item trong đó để mà hiểu á. Code clean, please follow the rule!.

tuple-trong-lap-trinh-python
Nhớ đặt tên vào

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Anh em nếu muốn tìm hiểu sâu hơn về Python có thể vào ghé Udefree để lựa cho mình các khoa học miễn phí cũng như trả phí

Có gì thắc mắc cứ comment đây nha! - Please feel free to comment here!

Kiên Nguyễn

👋 HEY THERE! 👋. My pleasure when you're here to read the article. Please feel free to comment, send a message or just want to say HELLO. Thank you, from bottom of my heart ❤️❤️❤️. Visit my portfolio: https://kieblog.com

Mời tui ly cà phê

Like page để không bỏ lỡ bài viết mới
Facebook Pagelike Widget
Bài viết mới
Lưu trữ