Hướng dẫn why do we use sort in python? - tại sao chúng ta sử dụng sắp xếp trong python?

Python sử dụng một thuật toán gọi là Timsort:

Timsort là một thuật toán sắp xếp lai, có nguồn gốc từ sắp xếp hợp nhất và sắp xếp chèn, được thiết kế để thực hiện tốt trên nhiều loại dữ liệu trong thế giới thực. Nó được phát minh bởi Tim Peters vào năm 2002 để sử dụng trong ngôn ngữ lập trình Python. Thuật toán tìm thấy các tập hợp con của dữ liệu đã được đặt hàng và sử dụng các tập hợp con để sắp xếp dữ liệu hiệu quả hơn. Điều này được thực hiện bằng cách hợp nhất một tập hợp con được xác định, được gọi là chạy, với các lần chạy hiện có cho đến khi các tiêu chí nhất định được đáp ứng. Timsort đã là thuật toán sắp xếp tiêu chuẩn của Python kể từ phiên bản 2.3. Bây giờ nó cũng được sử dụng để sắp xếp các mảng trong Java SE 7 và trên nền tảng Android.

Đã trả lời ngày 8 tháng 6 năm 2012 lúc 12:35Jun 8, 2012 at 12:35

4

Thuật toán sắp xếp được gọi là Timsort. Xem Timsort

Đã trả lời ngày 8 tháng 6 năm 2012 lúc 12:35Jun 8, 2012 at 12:35

Thuật toán sắp xếp được gọi là Timsort. Xem TimsortPierce

Piercepiierce2 silver badges8 bronze badges

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Sắp xếp dữ liệu bằng Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Sorting Data With Python

Tất cả các lập trình viên sẽ phải viết mã để sắp xếp các mục hoặc dữ liệu tại một số điểm. Việc sắp xếp có thể rất quan trọng đối với trải nghiệm người dùng trong ứng dụng của bạn, cho dù đó là việc đặt hàng một hoạt động gần đây nhất của người dùng bằng dấu thời gian hay đặt danh sách người nhận email theo thứ tự bảng chữ cái theo tên cuối cùng. Chức năng phân loại Python cung cấp các tính năng mạnh mẽ để sắp xếp cơ bản hoặc tùy chỉnh thứ tự ở mức hạt.

Trong hướng dẫn này, bạn sẽ học cách sắp xếp các loại dữ liệu khác nhau trong các cấu trúc dữ liệu khác nhau, tùy chỉnh thứ tự và làm việc với hai phương thức sắp xếp khác nhau trong Python.

Đến cuối hướng dẫn này, bạn sẽ biết cách:

  • Thực hiện phân loại và đặt hàng Python cơ bản trên các cấu trúc dữ liệu
  • Phân biệt giữa
    >>> numbers_tuple = [6, 9, 3, 1]
    >>> numbers_set = {5, 5, 10, 1, 0}
    >>> numbers_tuple_sorted = sorted[numbers_tuple]
    >>> numbers_set_sorted = sorted[numbers_set]
    >>> numbers_tuple_sorted
    [1, 3, 6, 9]
    >>> numbers_set_sorted
    [0, 1, 5, 10]
    
    4 và
    >>> numbers_tuple = [6, 9, 3, 1]
    >>> numbers_set = {5, 5, 10, 1, 0}
    >>> numbers_tuple_sorted = sorted[numbers_tuple]
    >>> numbers_set_sorted = sorted[numbers_set]
    >>> numbers_tuple_sorted
    [1, 3, 6, 9]
    >>> numbers_set_sorted
    [0, 1, 5, 10]
    
    5
  • Tùy chỉnh một thứ tự sắp xếp phức tạp trong mã của bạn dựa trên các yêu cầu duy nhất

Đối với hướng dẫn này, bạn sẽ cần một sự hiểu biết cơ bản về danh sách và bộ dữ liệu cũng như các bộ. Những cấu trúc dữ liệu đó sẽ được sử dụng trong hướng dẫn này và một số hoạt động cơ bản sẽ được thực hiện trên chúng. Ngoài ra, hướng dẫn này sử dụng Python 3, vì vậy đầu ra ví dụ trong hướng dẫn này có thể thay đổi một chút nếu bạn sử dụng Python 2.

Đặt hàng các giá trị với
>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4

Để bắt đầu với việc sắp xếp Python, trước tiên bạn sẽ xem cách sắp xếp cả dữ liệu số và dữ liệu chuỗi.

Sắp xếp số

Bạn có thể sử dụng Python để sắp xếp danh sách bằng cách sử dụng

>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4. Trong ví dụ này, một danh sách các số nguyên được xác định, và sau đó
>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4 được gọi với biến
>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
9 là đối số:

>>>

>>> numbers = [6, 9, 3, 1]
>>> sorted[numbers]
[1, 3, 6, 9]
>>> numbers
[6, 9, 3, 1]

Đầu ra từ mã này là một danh sách mới, được sắp xếp. Khi biến ban đầu được in, các giá trị ban đầu không thay đổi.

Ví dụ này cho thấy bốn đặc điểm quan trọng của

>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4:

  1. Hàm
    >>> numbers_tuple = [6, 9, 3, 1]
    >>> numbers_set = {5, 5, 10, 1, 0}
    >>> numbers_tuple_sorted = sorted[numbers_tuple]
    >>> numbers_set_sorted = sorted[numbers_set]
    >>> numbers_tuple_sorted
    [1, 3, 6, 9]
    >>> numbers_set_sorted
    [0, 1, 5, 10]
    
    4 không phải được xác định. Nó có một chức năng tích hợp có sẵn trong một bản cài đặt Python tiêu chuẩn.
  2. >>> numbers_tuple = [6, 9, 3, 1]
    >>> numbers_set = {5, 5, 10, 1, 0}
    >>> numbers_tuple_sorted = sorted[numbers_tuple]
    >>> numbers_set_sorted = sorted[numbers_set]
    >>> numbers_tuple_sorted
    [1, 3, 6, 9]
    >>> numbers_set_sorted
    [0, 1, 5, 10]
    
    4, không có đối số hoặc tham số bổ sung, đang đặt hàng các giá trị trong
    >>> numbers_tuple = [6, 9, 3, 1]
    >>> numbers_set = {5, 5, 10, 1, 0}
    >>> numbers_tuple_sorted = sorted[numbers_tuple]
    >>> numbers_set_sorted = sorted[numbers_set]
    >>> numbers_tuple_sorted
    [1, 3, 6, 9]
    >>> numbers_set_sorted
    [0, 1, 5, 10]
    
    9 theo thứ tự tăng dần, có nghĩa là nhỏ nhất đến lớn nhất.
  3. Biến
    >>> numbers_tuple = [6, 9, 3, 1]
    >>> numbers_set = {5, 5, 10, 1, 0}
    >>> numbers_tuple_sorted = sorted[numbers_tuple]
    >>> numbers_set_sorted = sorted[numbers_set]
    >>> numbers_tuple_sorted
    [1, 3, 6, 9]
    >>> numbers_set_sorted
    [0, 1, 5, 10]
    
    9 ban đầu không thay đổi vì
    >>> numbers_tuple = [6, 9, 3, 1]
    >>> numbers_set = {5, 5, 10, 1, 0}
    >>> numbers_tuple_sorted = sorted[numbers_tuple]
    >>> numbers_set_sorted = sorted[numbers_set]
    >>> numbers_tuple_sorted
    [1, 3, 6, 9]
    >>> numbers_set_sorted
    [0, 1, 5, 10]
    
    4 cung cấp đầu ra được sắp xếp và không thay đổi giá trị ban đầu tại chỗ.
  4. Khi
    >>> numbers_tuple = [6, 9, 3, 1]
    >>> numbers_set = {5, 5, 10, 1, 0}
    >>> numbers_tuple_sorted = sorted[numbers_tuple]
    >>> numbers_set_sorted = sorted[numbers_set]
    >>> numbers_tuple_sorted
    [1, 3, 6, 9]
    >>> numbers_set_sorted
    [0, 1, 5, 10]
    
    4 được gọi, nó cung cấp một danh sách được đặt hàng dưới dạng giá trị trả về.

Điểm cuối cùng này có nghĩa là

>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4 có thể được sử dụng trong danh sách và đầu ra có thể được gán ngay lập tức cho một biến:

>>>

>>> numbers = [6, 9, 3, 1]
>>> numbers_sorted = sorted[numbers]
>>> numbers_sorted
[1, 3, 6, 9]
>>> numbers
[6, 9, 3, 1]

Đầu ra từ mã này là một danh sách mới, được sắp xếp. Khi biến ban đầu được in, các giá trị ban đầu không thay đổi.

Ví dụ này cho thấy bốn đặc điểm quan trọng của

>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4:

>>>

>>> # Python 3
>>> help[sorted]
Help on built-in function sorted in module builtins:

sorted[iterable, /, *, key=None, reverse=False]
    Return a new list containing all items from the iterable in ascending order.

    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.

Đầu ra từ mã này là một danh sách mới, được sắp xếp. Khi biến ban đầu được in, các giá trị ban đầu không thay đổi.

>>>

>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]

Đầu ra từ mã này là một danh sách mới, được sắp xếp. Khi biến ban đầu được in, các giá trị ban đầu không thay đổi.

>>>

>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
>>> tuple[numbers_tuple_sorted]
[1, 3, 6, 9]
>>> set[numbers_set_sorted]
{0, 1, 10, 5}

Đầu ra từ mã này là một danh sách mới, được sắp xếp. Khi biến ban đầu được in, các giá trị ban đầu không thay đổi.

Ví dụ này cho thấy bốn đặc điểm quan trọng của
>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4:

Hàm

>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4 không phải được xác định. Nó có một chức năng tích hợp có sẵn trong một bản cài đặt Python tiêu chuẩn.

>>>

>>> string_number_value = '34521'
>>> string_value = 'I like to sort'
>>> sorted_string_number = sorted[string_number_value]
>>> sorted_string = sorted[string_value]
>>> sorted_string_number
['1', '2', '3', '4', '5']
>>> sorted_string
[' ', ' ', ' ', 'I', 'e', 'i', 'k', 'l', 'o', 'o', 'r', 's', 't', 't']

Đầu ra từ mã này là một danh sách mới, được sắp xếp. Khi biến ban đầu được in, các giá trị ban đầu không thay đổi.

>>> string_value = 'I like to sort'
>>> sorted_string = sorted[string_value.split[]]
>>> sorted_string
['I', 'like', 'sort', 'to']
>>> ' '.join[sorted_string]
'I like sort to'
6 có thể thay đổi hành vi này và làm sạch đầu ra, và
>>> string_value = 'I like to sort'
>>> sorted_string = sorted[string_value.split[]]
>>> sorted_string
['I', 'like', 'sort', 'to']
>>> ' '.join[sorted_string]
'I like sort to'
7 có thể đặt tất cả lại với nhau. Chúng tôi sẽ bao gồm thứ tự cụ thể của đầu ra và tại sao nó lại như vậy:

>>>

>>> string_value = 'I like to sort'
>>> sorted_string = sorted[string_value.split[]]
>>> sorted_string
['I', 'like', 'sort', 'to']
>>> ' '.join[sorted_string]
'I like sort to'

Câu gốc trong ví dụ này được chuyển đổi thành một danh sách các từ thay vì để lại nó dưới dạng

>>> string_number_value = '34521'
>>> string_value = 'I like to sort'
>>> sorted_string_number = sorted[string_number_value]
>>> sorted_string = sorted[string_value]
>>> sorted_string_number
['1', '2', '3', '4', '5']
>>> sorted_string
[' ', ' ', ' ', 'I', 'e', 'i', 'k', 'l', 'o', 'o', 'r', 's', 't', 't']
9. Danh sách đó sau đó được sắp xếp và kết hợp để tạo thành một
>>> string_number_value = '34521'
>>> string_value = 'I like to sort'
>>> sorted_string_number = sorted[string_number_value]
>>> sorted_string = sorted[string_value]
>>> sorted_string_number
['1', '2', '3', '4', '5']
>>> sorted_string
[' ', ' ', ' ', 'I', 'e', 'i', 'k', 'l', 'o', 'o', 'r', 's', 't', 't']
9 một lần nữa thay vì một danh sách.

Những hạn chế và gotchas với sự sắp xếp python

Điều đáng chú ý là một số hạn chế và hành vi kỳ lạ có thể phát sinh khi bạn sử dụng Python để sắp xếp các giá trị bên cạnh số nguyên.

Danh sách với các loại dữ liệu không thể so sánh có thể là
>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4

Có những loại dữ liệu có thể được so sánh với nhau bằng cách sử dụng

>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4 vì chúng quá khác nhau. Python sẽ trả về một lỗi nếu bạn cố gắng sử dụng
>>> numbers_tuple = [6, 9, 3, 1]
>>> numbers_set = {5, 5, 10, 1, 0}
>>> numbers_tuple_sorted = sorted[numbers_tuple]
>>> numbers_set_sorted = sorted[numbers_set]
>>> numbers_tuple_sorted
[1, 3, 6, 9]
>>> numbers_set_sorted
[0, 1, 5, 10]
4 trên danh sách chứa dữ liệu không thể so sánh. Trong ví dụ này, một
>>> mixed_types = [None, 0]
>>> sorted[mixed_types]
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: '

Bài Viết Liên Quan

Chủ Đề