Bài 3.3. Sắp xếp một List

Bài 3.3. Sắp xếp một List
Thường thì danh sách của bạn sẽ được tạo ra theo thứ tự không thể đoán trước, vì bạn không thể luôn kiểm soát thứ tự mà người dùng của bạn cung cấp dữ liệu của họ. Mặc dù điều này không thể tránh khỏi trong hầu hết các trường hợp, bạn sẽ thường xuyên muốn trình bày thông tin của mình theo một thứ tự cụ thể. Đôi khi bạn sẽ muốn giữ nguyên thứ tự ban đầu của danh sách, và những lần khác bạn sẽ muốn thay đổi thứ tự ban đầu. Python cung cấp nhiều cách khác nhau để tổ chức danh sách của bạn, tùy thuộc vào tình huống.
Sắp xếp danh sách vĩnh viễn với phương thức sort()
Phương thức sort() của Python làm cho việc sắp xếp một danh sách trở nên tương đối dễ dàng. Hãy tưởng tượng chúng ta có một danh sách các xe hơi và muốn thay đổi thứ tự của danh sách để lưu trữ chúng theo thứ tự bảng chữ cái. Để giữ cho nhiệm vụ đơn giản, giả sử rằng tất cả các giá trị trong danh sách đều là chữ thường:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
Phương thức sort() thay đổi thứ tự của danh sách vĩnh viễn. Các xe hơi bây giờ ở thứ tự bảng chữ cái, và chúng ta không thể khôi phục lại thứ tự ban đầu:
['audi', 'bmw', 'subaru', 'toyota']
Bạn cũng có thể sắp xếp danh sách này theo thứ tự ngược lại bảng chữ cái bằng cách truyền đối số reverse=True cho phương thức sort(). Ví dụ sau sắp xếp danh sách các xe hơi theo thứ tự ngược lại bảng chữ cái:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
Một lần nữa, thứ tự của danh sách đã bị thay đổi vĩnh viễn:
['toyota', 'subaru', 'bmw', 'audi']
Sắp xếp danh sách tạm thời với hàm sorted()
Để duy trì thứ tự ban đầu của một danh sách nhưng trình bày nó theo thứ tự đã sắp xếp, bạn có thể sử dụng hàm sorted(). Hàm sorted() cho phép bạn hiển thị danh sách của mình theo một thứ tự cụ thể, nhưng không ảnh hưởng đến thứ tự thực tế của danh sách.
Hãy thử hàm này trên danh sách các xe hơi.
cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)
print("\nHere is the sorted list:")
print(sorted(cars))
print("\nHere is the original list again:")
print(cars)
Chúng ta đầu tiên in danh sách theo thứ tự ban đầu của nó và sau đó theo thứ tự bảng chữ cái. Sau khi danh sách được hiển thị theo thứ tự mới, chúng ta cho thấy rằng danh sách vẫn được lưu trữ theo thứ tự ban đầu của nó:
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']
Lưu ý rằng danh sách vẫn tồn tại theo thứ tự ban đầu của nó sau khi hàm sorted() đã được sử dụng. Hàm sorted() cũng có thể chấp nhận đối số reverse=True nếu bạn muốn hiển thị danh sách theo thứ tự ngược lại bảng chữ cái.
In danh sách theo thứ tự ngược lại
Để đảo ngược thứ tự ban đầu của một danh sách, bạn có thể sử dụng phương thức reverse(). Nếu chúng ta ban đầu lưu trữ danh sách các xe hơi theo thứ tự thời gian theo thứ tự chúng ta sở hữu chúng, chúng ta có thể dễ dàng sắp xếp lại danh sách theo thứ tự ngược lại thời gian:
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
Lưu ý rằng reverse() không sắp xếp ngược lại bảng chữ cái; nó chỉ đơn giản đảo ngược thứ tự của danh sách:
['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']
Phương thức reverse() thay đổi thứ tự của một danh sách vĩnh viễn, nhưng bạn có thể khôi phục lại thứ tự ban đầu bất cứ lúc nào bằng cách áp dụng reverse() cho cùng một danh sách một lần nữa.
Tìm độ dài của một danh sách
Bạn có thể nhanh chóng tìm thấy độ dài của một danh sách bằng cách sử dụng hàm len(). Danh sách trong ví dụ này có bốn mục, vì vậy độ dài của nó là 4:
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4
Bạn sẽ thấy hàm len() hữu ích khi bạn cần xác định số lượng người ngoài hành tinh vẫn cần phải bắn hạ trong một trò chơi, xác định lượng dữ liệu bạn phải quản lý trong một hình ảnh hóa, hoặc tìm ra số lượng người dùng đã đăng ký trên một trang web, trong số các nhiệm vụ khác.
Comments