Hướng dẫn tuple packing in python

Tuple trong Python là gì?

Tuple có thể coi như tập hợp của các đối tượng bất biến trong Python. Sự khác biệt giữa danh sách (list) và tuple đó là danh sách được khai báo trong ngoặc vuông và có thể được thay đổi trong khi tuple được khai báo trong ngoặc đơn và không thể thay đổi. Tuy nhiên, bạn có thể lấy một phần của các tuple hiện có để tạo tuple mới.

Cú pháp

Tup = ('Jan','feb','march')

Để tạo một tuple trống, bạn cần viết dưới dạng hai dấu ngoặc đơn nhưng không chứa nội dung:

tup1 = ()

Cũng giống như list các chỉ số trong tuple được bắt đầu từ 0

Trong bài này, chúng ta sẽ tìm hiểu về:

  • Đóng gói và giải nén một tuple

  • So sánh các tuple

  • Xóa Tuples

  • Cắt lát Tuple

  • Các tính năng dựng sẵn của tuple

  • Ưu điểm của tuple so với danh sách

Gán tuple

Phép gán tuple có cú pháp như sau

tuple = (, , ..., )

Ví dụ:

tup1 = ('Robert', 'Carlos','1965','Terminator 1995', 'Actor','Florida')
tup2 = (1,2,3,4,5,6,7)
print(tup1[0])
print(tup2[1:4])
  • Tuple1 bao gồm danh sách thông tin của Robert

  • Tuple2 bao gồm danh sách các số trong đó

  • Chúng ta sẽ trả về giá trị [0] trong tuple1 và trả về giá trị từ 1 tới 3 (4-1) đối với tuple2.

  • Chạy đoạn mã trên – Chương trình trả về tên Robert đối với tuple1 và trả về số (2,3 và 4) đối với tuple2.

Đóng gói và giải nén tuple

Đối với quá trình đóng gói (packing), chúng ta gán giá trị cho một tuple mới, còn đối với quá trình giải nén (unpacking), chúng ta trích xuất các giá trị đó và gán cho biến.

x = ("Guru99", 20, "Education") # tuple packing
(company, emp, profile) = x # tuple unpacking

print(company)
print(emp)
print(profile)

So sánh các tuples

Toán tử so sánh trong Python có thể làm việc với tuple.

Quá trình so sánh bắt đầu với phần tử đầu tiên của mỗi tuple. Nếu phép so sánh =, < hoặc > không thể được thực hiện với phần tử đầu tiên thì phần tử thứ hai sẽ được duyệt đến.

Quá trình bắt đầu bằng việc so sánh phần tử đầu tiên của mỗi tuple.

Cùng tìm hiểu ví dụ sau:

Trường hợp 1

a=(5,6)
b=(1,4)

if (a>b):print("a is bigger")
else: print("b is bigger")

Trường hợp 2

a=(5,6)
b=(5,4)

if (a>b):print("a is bigger")
else: print ("b is bigger")

Trường hợp 3

a=(5,6)
b=(6,4)

if (a>b):print("a is bigger")
else: print("b is bigger")

#Trường hợp 1: Phép so sánh bắt đầu với phần tử đầu tiên của mỗi tuple. Trong trường hợp này 5 > 1, do đó, kết quả trả về “a is bigger”.

#Trường hợp 2: Phép so sánh bắt đầu với phần tử đầu tiên của mỗi tuple. Trong trường hợp này không thể kết luận 5 > 5. Vì vậy, chương trình duyệt tới phần tử tiếp theo: 6>4, do đó, trả về kết quả “a is bigger”..

#Trường hợp 3: Phép so sánh bắt đầu với phần tử đầu tiên của mỗi tuple. Trong trường hợp này 5 > 6 là sai, vì vậy chương trình thực hiện câu lệnh trong vòng else và trả về kết quả "b is bigger".

Tuple và từ điển

Từ điển có thể trả về danh sách các tuple bằng cách gọi hàm items(), trong đó mỗi tupel là một cặp khóa-giá trị.

a = {'x':100, 'y':200}
b = list(a.items())

print(b)

Kết quả:

[('x', 100), ('y', 200)]

Xóa Tuples

Tuple không thể bị thay đổi, nhưng ta có thể xóa hoàn toàn tuple bằng từ khóa “del”.

Cắt lát tuple

Để trả về tập các phần tử con trong tuple hoặc danh sách, chúng ta sử dụng phương thức đặc biệt gọi là cắt lát (slice). Cắt lát không chỉ có thể áp dụng cho tuple mà còn có thể áp dụng cho chuỗi(string) hoặc danh sách(list).

x = ("a", "b","c", "d", "e")

print(x[2:4])

Đầu ra của đoạn mã trên sẽ là ('c', 'd').

Đây là mã nguồn sử dụng Python 2 cho tất cả các ví dụ trên

tup1 = ('Robert', 'Carlos','1965','Terminator 1995', 'Actor','Florida');
tup2 = (1,2,3,4,5,6,7);

print tup1[0]
print tup2[1:4]


#Packing and Unpacking

x = ("Guru99", 20, "Education") # tuple packing
(company, emp, profile) = x # tuple unpacking

print company
print emp
print profile

#Comparing tuples
#case 1
a=(5,6)
b=(1,4)

if (a>b):print "a is bigger"
else: print "b is bigger"

#case 2
a=(5,6)
b=(5,4)

if (a>b):print "a is bigger"
else: print "b is bigger"

#case 3
a=(5,6)
b=(6,4)

if (a>b):print "a is bigger"
else: print "b is bigger"

#Tuples and dictionary
a = {'x':100, 'y':200}
b = a.items()
print b

#Slicing of Tuple
x = ("a", "b","c", "d", "e")
print x[2:4]

Ưu điểm của tuple so với danh sách

  • Duyệt tuple nhanh hơn so với danh sách vì tuple là không thể thay đổi, nó được lưu ở bộ nhớ tĩnh.

  • Nếu bạn có dữ liệu là bất biến, việc triển khai nó dưới dạng tuple sẽ đảm bảo rằng dữ liệu này sẽ không bị ghi đè.

Tổng kết:

Python có tính năng gán tuple cho phép bạn gán nhiều biến cùng một lúc.

  • Đóng gói và giải nén Tuples

    • Đối với quá trình đóng gói, chúng ta gán giá trị cho một tuple mới, còn đối với quá trình giải nén, chúng ta trích xuất các giá trị đó và gán cho biến.

  • Toán tử so sánh trong python có thể làm việc với tuple

  • Tuple là ko thể thay đổi, nhưng có thể xóa hoàn toàn tuple bằng từ khóa “del”.

  • Để trả về tập các phần tử con trong tuple hoặc danh sách, chúng ta sử dụng phương thức đặc biệt gọi là cắt lát.