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 Tuple Python 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.
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
Tuyển dụng Python mọi cấp độ tại đây!
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 | Tuple |
List có thể thay đổi được | Tuple 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 delete | Tuple 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ẵn | Tuple không có nhiều phương thức định sẵn |
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!.
Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!
Tác giả: Kiên Nguyễn
Top IT Jobs hot dành riêng cho Top Developers tại TopDev!