Sắp xếp tuple trong python | Laptrinhcanban.com

Sắp xếp tuple trong python

Hướng dẫn cách sắp xếp tuple trong python. Bạn sẽ học được cách sắp xếp trong tuple python bằng hàm sorted (), cách sắp xếp tuple python khi các phần tử có kiểu dữ liệu khác nhau, cũng như cách thay đổi luật sắp xếp tuple python sau bài học này.

Sắp xếp tuple trong python theo thứ tự tăng dần

Để sắp xếp tuple trong python theo thứ tự tăng dần, chúng ta cần dùng tới hàm sorted. Trong các bài trước chúng ta đã biết hàm sorted () trong python có cú pháp mặc định sau đây:

newlist = sorted(iterable, *, key=None, reverse=False)

Sau khi tối giản option và chỉ định đối số của hàm sorted() bằng tuple, chúng ta có thể ứng dụng hàm này và sắp xếp tuple python theo thứ tự tăng dần với cú pháp giản lược sau đây:

newlist = sorted(tuple)

Trong đó tuple là tuple cần sắp xếp và newlist là kết quả sắp xếp được lưu giữ dưới dạng một list.

Cần lưu ý là kết quả của hàm sorted() luôn là một list, do đó nếu bạn muốn sắp xếp một tuple và trả về một tuple khác, thì bạn phải chuyển đổi list này sang tuple. Các làm chi tiết hãy tham khảo tại bài Tạo tuple bằng list trong python.

Hãy xem ví dụ cụ thể sau đây:

numtuple = (55, 78, 92, 82, 65)

newnumlist = sorted(numtuple)
newnumtuple = tuple(newnumlist)

print("Before:", numtuple)
#>> Before: (55, 78, 92, 82, 65)
print("After: ", newnumtuple)
#>> After: (55, 65, 78, 82, 92)

Một ví dụ khác:

animaltuple = ("Dog", "Cat", "Bear", "Deer")

newanimallist = sorted(animaltuple)
newanimaltuple = tuple(newanimallist)

print("Before:", animaltuple)
#>> Before: ('Dog', 'Cat', 'Bear', 'Deer')
print("After: ", newanimaltuple)
#>> After: ('Bear', 'Cat', 'Deer', 'Dog')

Sắp xếp tuple trong python theo thứ tự giảm dần

Để sắp xếp tuple trong python theo thứ tự giảm dần bằng hàm sorted(), hãy chỉ định thêm đối số reverse=True như sau:

newlist = sorted(tuple, reverse=True)

Ví dụ cụ thể như sau:

colortuple = ("Blue", "Red", "Green", "White", "Black")

upcolortuple = tuple(sorted(colortuple))
downcolortuple = tuple(sorted(colortuple, reverse=True))

print("Orig:", colortuple)
#>> Orig: ('Blue', 'Red', 'Green', 'White', 'Black')
print("ASC: ", upcolortuple)
#>> ASC: ('Black', 'Blue', 'Green', 'Red', 'White')
print("DESC:", downcolortuple)
#>> DESC: ('White', 'Red', 'Green', 'Blue', 'Black')

Sắp xếp tuple trong python khi các phần tử có kiểu dữ liệu khác nhau

Trong bài Tạo tuple trong python chúng ta đã biết giá trị của các phần tử của tuple trong python có thể thuộc nhiều kiểu dữ liệu khác nhau trong python như kiểu chuỗi, list, số, dictionary v.v…
Tuy nhiên để sắp xếp tuple trong python thì chúng ta cần so sánh giá trị của các phần tử với nhau, do đó việc sắp xếp tuple có thành công hay không còn tùy thuộc vào việc các giá trị đó có thể so sánh với nhau hay không.

Ví dụ trong một tuple có phần tử thuộc cả dạng số nguyên (kiểu int) lẫn số thực (kiểu float), do hai kiểu này có thể so sánh giá trị được với nhau nên chúng ta có thể tiến hành sắp xếp tuple như sau:

numtuple = (5, 3.14, 4.78, 4)
newlist = sorted(numtuple)

print(tuple(newlist))
#>> (3.14, 4, 4.78, 5)

Tuy nhiên, trong trường hợp giả sử trong tuple chứa cả số lẫn chuỗi, do giá trị của hai kiểu dữ liệu này không thể so sánh được với nhau, dẫn đến chúng ta không thể sắp xếp được một tuple như thế.
Nếu có sắp xếp, lỗi TypeError sẽ bị trả về:

mytuple = ("80", 75, 45, "68")
newlist = sorted(mytuple)

#>> Traceback (most recent call last):
#>> File "<stdin>", line 1, in <module>
#>> TypeError: '<' not supported between instances of 'int' and 'str'

Thay đổi luật sắp xếp tuple trong python

Về mặc định khi sắp xếp tuple python, chúng ta tiến hành sắp xếp tuple đó theo giá trị các phần tử của nó.
Tuy nhiên trong trường hợp chúng ta muốn sắp xếp tuple theo độ dài của phần tử, hay theo giá trị tuyệt đối của phần tử v.v.. chẳng hạn, chúng ta có thể Thay đổi luật sắp xếp tuple python bằng cách sử dụng đối số key trong hàm sorted() như sau:

newlist = sorted(tuple, key=tên hàm)

Tên hàm sử dụng ở đây có thể là hàm len(), hàm abs() hoặc có thể là một hàm tự tạo để bạn có thể sắp xếp tuple theo quy luật mà mình mong muốn.

Cách làm này khá giống với phương pháp Thay đổi luật sắp xếp dictionary python.

Ví dụ, chúng ta sắp xếp tuple với key là hàm abs() như sau:

mytuple = (5, -4, -7, 6)

tuple(sorted(mytuple))
#>> (-7, -4, 5, 6)

tuple(sorted(mytuple, key=abs))
#>> (-4, 5, 6, -7)

Một ví dụ khác khi sử dụng hàm len() để Thay đổi luật sắp xếp tuple trong python:

mytuple = ("apple", "pen", "desk", "banana")

tuple(sorted(mytuple))
--> ('apple', 'banana', 'desk', 'pen')

tuple(sorted(mytuple, key=len))
--> ('pen', 'desk', 'apple', 'banana')

Ví dụ cuối cùng sẽ là một hàm tự tạo, chúng ta có thể tạo hàm này để có thể tự do sắp xếp tuple theo quy luật mà mình mong muốn:

def my_funct(num):
result = num * 2
return result

mytuple = (5, -4, -7, 6)

tuple(sorted(mytuple))
#>> (-7, -4, 5, 6)

print(tuple(sorted(mytuple, key=my_funct)))

#>> (-7, -4, 5, 6)

Tổng kết và thực hành

Trên đây Kiyoshi đã hướng dẫn bạn về cách sắp xếp tuple trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.