Nếu bạn muốn tìm hiểu cách làm việc với phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7 trong các dự án Python của mình, thì bài viết này là dành cho bạn. Phương pháp này rất mạnh mẽ và bạn có thể tùy chỉnh nó để phù hợp với nhu cầu của mình, vì vậy hãy xem cách thức hoạt động của nó một cách chi tiếtBạn sẽ học
- Cách sử dụng phương pháp này và tùy chỉnh chức năng của nó
- Khi nào nên sử dụng và khi nào không nên sử dụng
- Làm thế nào để gọi nó là vượt qua các kết hợp đối số khác nhau
- Cách sắp xếp danh sách theo thứ tự tăng dần và giảm dần
- Cách so sánh các phần tử của danh sách dựa trên các giá trị trung gian
- Làm cách nào bạn có thể chuyển các hàm lambda cho phương thức này
- So sánh phương thức này với hàm
8# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[] >>> b [2, 3, 3, 6, 7, 8, 9] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[] >>> c ['A', 'D', 'T', 'U', 'Z']
- Tại sao phương thức
7 thực hiện sắp xếp ổn định# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[] >>> b [2, 3, 3, 6, 7, 8, 9] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[] >>> c ['A', 'D', 'T', 'U', 'Z']
- Làm thế nào quá trình đột biến hoạt động đằng sau hậu trường
Bạn đã sẵn sàng chưa? . ⭐
🔹 Mục đích và trường hợp sử dụng
Với phương pháp
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7, bạn có thể sắp xếp một danh sách theo một trong hai- Thứ tự tăng dần
- Thứ tự giảm dần
Phương pháp này được sử dụng để sắp xếp một danh sách tại chỗ, có nghĩa là nó thay đổi nó hoặc sửa đổi nó trực tiếp mà không tạo thêm các bản sao, vì vậy hãy nhớ
Bạn sẽ tìm hiểu thêm về đột biến trong bài viết này [tôi hứa. ], nhưng hiện tại, điều rất quan trọng là bạn phải biết rằng phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7 sửa đổi danh sách, vì vậy phiên bản gốc của nó bị mấtDo đó, bạn chỉ nên sử dụng phương pháp này nếu
- Bạn muốn sửa đổi [sắp xếp] danh sách vĩnh viễn
- Bạn không cần giữ phiên bản gốc của danh sách
Nếu điều này phù hợp với nhu cầu của bạn, thì phương pháp
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
2 chính xác là thứ bạn đang tìm kiếm🔸 Cú pháp và đối số
Hãy xem cách bạn có thể gọi
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
2 để tận dụng toàn bộ sức mạnh của nóĐây là cuộc gọi cơ bản nhất [không có đối số]
Nếu bạn không chuyển bất kỳ đối số nào, theo mặc định
- Danh sách sẽ được sắp xếp tăng dần
- Các phần tử của danh sách sẽ được so sánh trực tiếp bằng cách sử dụng các giá trị của chúng với toán tử
4# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[reverse=True] >>> b [9, 8, 7, 6, 3, 3, 2] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[reverse=True] >>> c ['Z', 'U', 'T', 'D', 'A']
Ví dụ
________số 8_______Đối số tùy chỉnh
Để tùy chỉnh cách thức hoạt động của phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7, bạn có thể truyền hai đối số tùy chọn- Chìa khóa
- Đảo ngược
Hãy xem cách họ thay đổi hành vi của phương pháp này. Ở đây chúng ta có một cuộc gọi phương thức với hai đối số này
Trước khi giải thích cách chúng hoạt động, tôi muốn giải thích một điều mà bạn có thể nhận thấy trong sơ đồ trên – trong lệnh gọi phương thức, tên của các tham số phải được đưa vào trước các giá trị tương ứng của chúng, như thế này
6# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[reverse=True] >>> b [9, 8, 7, 6, 3, 3, 2] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[reverse=True] >>> c ['Z', 'U', 'T', 'D', 'A']
7# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[reverse=True] >>> b [9, 8, 7, 6, 3, 3, 2] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[reverse=True] >>> c ['Z', 'U', 'T', 'D', 'A']
Điều này là bởi vì họ là. Nếu bạn đang chuyển một giá trị tùy chỉnh cho chúng, thì tên của chúng phải được chỉ định trong lệnh gọi phương thức, theo sau là dấu bằng
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
8 và các giá trị tương ứng của chúng, như thế nàyMặt khác, nếu bạn cố gắng truyền đối số trực tiếp như cách chúng ta thường làm đối với tham số vị trí, bạn sẽ thấy lỗi này vì hàm sẽ không biết đối số nào tương ứng với tham số nào
TypeError: sort[] takes no positional arguments
Đảo ngược
Bây giờ bạn đã biết đối số chỉ có từ khóa là gì, hãy bắt đầu với
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
9Giá trị của
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
9 có thể là >>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
1 hoặc >>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
2
2 có nghĩa là danh sách sẽ được sắp xếp theo thứ tự tăng dần>>> d = ["aaa", "bb", "c"] >>> d.sort[key=len] >>> d ['c', 'bb', 'aaa']
1 có nghĩa là danh sách sẽ được sắp xếp theo thứ tự giảm dần [đảo ngược]>>> d = ["aaa", "bb", "c"] >>> d.sort[key=len] >>> d ['c', 'bb', 'aaa']
💡 Mẹo. Theo mặc định, giá trị của nó là
>>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
2 – nếu bạn không chuyển bất kỳ đối số nào cho tham số này, danh sách sẽ được sắp xếp theo thứ tự tăng dầnỞ đây chúng tôi có một vài ví dụ
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
💡 Mẹo. Nếu các phần tử của danh sách là chuỗi, chúng được sắp xếp theo thứ tự bảng chữ cái
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
💡 Mẹo. Lưu ý cách danh sách được sắp xếp theo thứ tự giảm dần nếu
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
9 là >>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
1Chìa khóa
Bây giờ bạn đã biết cách làm việc với tham số
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
9, hãy xem tham số >>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9Tham số này chi tiết hơn một chút vì nó xác định cách so sánh các phần tử của danh sách trong quá trình sắp xếp
Giá trị của
>>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9 là
1, có nghĩa là các phần tử của danh sách sẽ được so sánh trực tiếp. Ví dụ, trong một danh sách các số nguyên, bản thân các số nguyên có thể được sử dụng để so sánh>>> "E" < "e" True
- Hàm của một đối số tạo ra giá trị trung gian cho từng phần tử. Giá trị trung gian này chỉ được tính một lần và được dùng để so sánh trong toàn bộ quá trình sắp xếp. Chúng tôi sử dụng điều này khi chúng tôi không muốn so sánh trực tiếp các phần tử, ví dụ: khi chúng tôi muốn so sánh các chuỗi dựa trên độ dài của chúng [giá trị trung gian]
💡 Mẹo. Theo mặc định, giá trị của
>>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9 là >>> "E" < "e"
True
1, vì vậy các phần tử được so sánh trực tiếpVí dụ
Giả sử chúng ta muốn sắp xếp danh sách các chuỗi dựa trên độ dài của chúng, từ chuỗi ngắn nhất đến chuỗi dài nhất. Chúng ta có thể truyền hàm
>>> "E" < "e"
True
4 làm giá trị của >>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9, như thế này>>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
💡 Mẹo. Lưu ý rằng chúng tôi chỉ chuyển tên của hàm [_______28_______4] mà không có dấu ngoặc đơn vì chúng tôi không gọi hàm. Cái này rất quan trọng
Lưu ý sự khác biệt giữa so sánh trực tiếp các phần tử và so sánh độ dài của chúng [xem bên dưới]. Sử dụng giá trị mặc định của
>>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9 [>>> "E" < "e"
True
1] sẽ sắp xếp các chuỗi theo thứ tự bảng chữ cái [trái], nhưng bây giờ chúng tôi đang sắp xếp chúng dựa trên độ dài của chúng [phải]Điều gì xảy ra đằng sau hậu trường?
Điều này dẫn đến một danh sách có tiêu chí sắp xếp khác. chiều dài
Ở đây chúng ta có một ví dụ khác
Một ví dụ thú vị khác là sắp xếp danh sách các chuỗi như thể tất cả chúng được viết bằng chữ thường [ví dụ: tạo "Aa" tương đương với "aa"]
Theo thứ tự từ điển, chữ hoa đứng trước chữ thường
>>> "E" < "e"
True
Vì vậy, chuỗi
>>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
0 sẽ xuất hiện trước >>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
1 trong một danh sách được sắp xếp, ngay cả khi các phiên bản chữ thường của chúng sẽ theo thứ tự ngược lại>>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
Để tránh phân biệt giữa chữ hoa và chữ thường, chúng ta có thể chuyển hàm
>>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
2 thành >>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9. Điều này sẽ tạo ra một phiên bản chữ thường của các chuỗi sẽ được sử dụng để so sánh>>> e = ["Emma", "emily", "Amy", "Jason"]
>>> e.sort[key=str.lower]
>>> e
['Amy', 'emily', 'Emma', 'Jason']
Lưu ý rằng bây giờ,
>>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
1 đứng trước >>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
0 trong danh sách đã sắp xếp, đây chính xác là những gì chúng ta muốn💡 Mẹo. nếu chúng tôi đã sử dụng quy trình sắp xếp mặc định, tất cả các chuỗi bắt đầu bằng chữ in hoa sẽ xuất hiện trước tất cả các chuỗi bắt đầu bằng chữ thường
>>> e = ["Emma", "emily", "Amy", "Jason"]
>>> e.sort[]
>>> e
['Amy', 'Emma', 'Jason', 'emily']
Dưới đây là một ví dụ sử dụng Lập trình hướng đối tượng [OOP]
Nếu chúng ta có lớp Python rất đơn giản này
>>> class Client:
def __init__[self, age]:
self.age = age
Và chúng tôi tạo ra bốn trường hợp
TypeError: sort[] takes no positional arguments
0Chúng ta có thể tạo một danh sách tham khảo chúng
TypeError: sort[] takes no positional arguments
1Sau đó, nếu chúng ta định nghĩa một hàm để lấy
>>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
6 trong số các trường hợp nàyTypeError: sort[] takes no positional arguments
2Chúng ta có thể sắp xếp danh sách dựa trên tuổi của họ bằng cách chuyển hàm
>>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
7 một đối sốTypeError: sort[] takes no positional arguments
3Đây là phiên bản cuối cùng, được sắp xếp của danh sách. Chúng tôi sử dụng vòng lặp for để in tuổi của các cá thể theo thứ tự chúng xuất hiện trong danh sách
TypeError: sort[] takes no positional arguments
4Chính xác những gì chúng tôi muốn – bây giờ danh sách được sắp xếp theo thứ tự tăng dần dựa trên tuổi của các cá thể
💡 Mẹo. Thay vì xác định hàm
>>> "Emma" < "emily"
True
>>> "emma" < "emily"
False
7, chúng ta có thể sử dụng hàm lambda để lấy tuổi của từng phiên bản, như thế nàyTypeError: sort[] takes no positional arguments
5Các hàm lambda là các hàm ẩn danh nhỏ và đơn giản, có nghĩa là chúng không có tên. Chúng rất hữu ích cho những trường hợp này khi chúng tôi chỉ muốn sử dụng chúng ở những nơi cụ thể trong một khoảng thời gian rất ngắn
Đây là cấu trúc cơ bản của hàm lambda mà chúng ta đang sử dụng để sắp xếp danh sách
Vượt qua cả hai đối số
Đáng kinh ngạc. Bây giờ bạn đã biết cách tùy chỉnh chức năng của phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7. Nhưng bạn có thể nâng kỹ năng của mình lên một cấp độ hoàn toàn mới bằng cách kết hợp hiệu ứng của >>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9 và # List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
9 trong cùng một lệnh gọi phương thứcTypeError: sort[] takes no positional arguments
6Sắp xếp danh sách theo thứ tự ngược lại như thể các chuỗi đều ở dạng chữ thườngĐây là những kết hợp khác nhau của các đối số và tác dụng của chúng
Thứ tự của các đối số chỉ từ khóa không thành vấn đề
Vì chúng tôi đang chỉ định tên của các đối số, nên chúng tôi đã biết giá trị nào tương ứng với tham số nào, vì vậy chúng tôi có thể đưa
>>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9 hoặc # List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
9 vào đầu tiên trong danh sách và hiệu ứng sẽ hoàn toàn giống nhauVì vậy, phương pháp này gọi
Tương đương với
Đây là một ví dụ
TypeError: sort[] takes no positional arguments
7Nếu chúng ta thay đổi thứ tự của các đối số, chúng ta sẽ nhận được kết quả chính xác như vậy
TypeError: sort[] takes no positional arguments
8🔹 Giá trị trả về
Bây giờ hãy nói một chút về giá trị trả về của phương thức này. Phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7 trả về >>> "E" < "e"
True
1 – nó không trả về một phiên bản được sắp xếp của danh sách, như chúng ta có thể mong đợi bằng trực giácTheo
Để nhắc nhở người dùng rằng nó hoạt động theo tác dụng phụ, nó không trả về chuỗi đã sắp xếp
Về cơ bản, điều này được sử dụng để nhắc nhở chúng tôi rằng chúng tôi đang sửa đổi danh sách gốc trong bộ nhớ, không tạo bản sao mới của danh sách
Đây là một ví dụ về giá trị trả về của
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7TypeError: sort[] takes no positional arguments
9Thấy?
💡 Mẹo. Điều rất quan trọng là không nhầm lẫn giữa phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7 với hàm # List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
8, đây là một hàm hoạt động rất giống nhau nhưng không sửa đổi danh sách ban đầu. Thay vào đó, # List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
8 tạo và trả về một bản sao mới của danh sách, đã được sắp xếpĐây là một ví dụ mà chúng ta có thể sử dụng để so sánh chúng
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
0Ví dụ về. sắp xếp[]# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
1Ví dụ về sắp xếp[]Điều này rất quan trọng vì tác dụng của chúng rất khác nhau. Sử dụng phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7 khi bạn dự định sử dụng # List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
8 có thể đưa các lỗi nghiêm trọng vào chương trình của bạn vì bạn có thể không nhận ra rằng danh sách đang bị thay đổi🔸 Phương thức sort[] Thực hiện sắp xếp ổn định
Bây giờ hãy nói một chút về các đặc điểm của thuật toán sắp xếp được sử dụng bởi
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7Phương pháp này thực hiện sắp xếp ổn định vì nó hoạt động với việc triển khai TimSort, một thuật toán sắp xếp ổn định và hiệu quả cao
Theo
Một sắp xếp ổn định nếu nó đảm bảo không thay đổi thứ tự tương đối của các phần tử được so sánh bằng nhau — điều này hữu ích cho việc sắp xếp theo nhiều lần [ví dụ: sắp xếp theo bộ phận, sau đó theo bậc lương]
Điều này có nghĩa là nếu hai phần tử có cùng giá trị hoặc giá trị trung gian [khóa], thì chúng được đảm bảo giữ nguyên thứ tự so với nhau
Hãy xem những gì tôi có ý nghĩa với điều này. Vui lòng xem ví dụ này trong giây lát
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
2Chúng tôi đang so sánh các phần tử dựa trên độ dài của chúng vì chúng tôi đã chuyển hàm
>>> "E" < "e"
True
4 làm đối số cho >>> d = ["aaa", "bb", "c"]
>>> d.sort[key=len]
>>> d
['c', 'bb', 'aaa']
9Chúng ta có thể thấy rằng có ba phần tử có độ dài 2.
>>> e = ["Emma", "emily", "Amy", "Jason"]
>>> e.sort[]
>>> e
['Amy', 'Emma', 'Jason', 'emily']
6, >>> e = ["Emma", "emily", "Amy", "Jason"]
>>> e.sort[]
>>> e
['Amy', 'Emma', 'Jason', 'emily']
7, và >>> e = ["Emma", "emily", "Amy", "Jason"]
>>> e.sort[]
>>> e
['Amy', 'Emma', 'Jason', 'emily']
8 theo thứ tự đóBây giờ, lưu ý rằng ba phần tử này có cùng thứ tự tương đối trong danh sách được sắp xếp cuối cùng
Điều này là do thuật toán được đảm bảo ổn định và ba trong số chúng có cùng giá trị trung gian [khóa] trong quá trình sắp xếp [độ dài của chúng là 2, vì vậy khóa của chúng là 2]
💡 Mẹo. Điều tương tự cũng xảy ra với
>>> e = ["Emma", "emily", "Amy", "Jason"]
>>> e.sort[]
>>> e
['Amy', 'Emma', 'Jason', 'emily']
9 và >>> class Client:
def __init__[self, age]:
self.age = age
0 [độ dài 1] và >>> class Client:
def __init__[self, age]:
self.age = age
1 và >>> class Client:
def __init__[self, age]:
self.age = age
2 [độ dài 3], thứ tự ban đầu của chúng so với nhau được giữ nguyênBây giờ bạn đã biết phương pháp
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7 hoạt động như thế nào, vậy hãy đi sâu vào tìm hiểu về đột biến và cách nó có thể ảnh hưởng đến chương trình của bạn🔹 Đột biến và Rủi ro
Như đã hứa, chúng ta hãy xem quá trình đột biến hoạt động như thế nào ở hậu trường
Khi bạn xác định một danh sách trong Python, như thế này
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
3Bạn tạo một đối tượng tại một vị trí bộ nhớ cụ thể. Vị trí này được gọi là "địa chỉ bộ nhớ" của đối tượng, được biểu thị bằng một số nguyên duy nhất gọi là id
Bạn có thể coi id là một "thẻ" được sử dụng để xác định một vị trí cụ thể trong bộ nhớ
Bạn có thể truy cập id danh sách bằng cách sử dụng hàm ________ 48 _______4, chuyển danh sách dưới dạng đối số
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
4Khi bạn thay đổi danh sách, bạn thay đổi nó trực tiếp trong bộ nhớ. Bạn có thể hỏi, tại sao điều này rất rủi ro?
Điều này rất nguy hiểm vì nó ảnh hưởng đến từng dòng mã sử dụng danh sách sau khi thay đổi, vì vậy bạn có thể đang viết mã để làm việc với một danh sách hoàn toàn khác với danh sách thực tồn tại trong bộ nhớ sau khi thay đổi
Đây là lý do tại sao bạn cần phải rất cẩn thận với các phương pháp gây đột biến
Đặc biệt, phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7 thay đổi danh sách. Đây là một ví dụ về tác dụng của nóĐây là một ví dụ
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
5Danh sách đã bị thay đổi sau khi gọi
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[reverse=True]
>>> b
[9, 8, 7, 6, 3, 3, 2]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[reverse=True]
>>> c
['Z', 'U', 'T', 'D', 'A']
2Mỗi dòng mã hoạt động với danh sách
>>> class Client:
def __init__[self, age]:
self.age = age
7 sau khi đột biến xảy ra sẽ sử dụng phiên bản mới, được sắp xếp của danh sách. Nếu đây không phải là điều bạn dự định, bạn có thể không nhận ra rằng các phần khác trong chương trình của bạn đang hoạt động với phiên bản mới của danh sáchĐây là một ví dụ khác về rủi ro đột biến trong một chức năng
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
6Danh sách
>>> class Client:
def __init__[self, age]:
self.age = age
7 đã được chuyển dưới dạng đối số đã bị thay đổi, ngay cả khi đó không phải là điều bạn dự định khi viết hàm ban đầu💡 Mẹo. Nếu một chức năng thay đổi một đối số, nó phải được nêu rõ ràng để tránh đưa lỗi vào các phần khác của chương trình của bạn
🔸 Tóm tắt Phương thức sort[]
- Phương thức
7 cho phép bạn sắp xếp danh sách theo thứ tự tăng dần hoặc giảm dần# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[] >>> b [2, 3, 3, 6, 7, 8, 9] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[] >>> c ['A', 'D', 'T', 'U', 'Z']
- Phải mất hai đối số chỉ từ khóa.
9 và>>> d = ["aaa", "bb", "c"] >>> d.sort[key=len] >>> d ['c', 'bb', 'aaa']
9# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[reverse=True] >>> b [9, 8, 7, 6, 3, 3, 2] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[reverse=True] >>> c ['Z', 'U', 'T', 'D', 'A']
9 xác định xem danh sách được sắp xếp theo thứ tự tăng dần hay giảm dần# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[reverse=True] >>> b [9, 8, 7, 6, 3, 3, 2] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[reverse=True] >>> c ['Z', 'U', 'T', 'D', 'A']
9 là một hàm tạo ra một giá trị trung gian cho từng phần tử và giá trị này được sử dụng để so sánh trong quá trình sắp xếp>>> d = ["aaa", "bb", "c"] >>> d.sort[key=len] >>> d ['c', 'bb', 'aaa']
- Phương thức
7 thay đổi danh sách, gây ra những thay đổi vĩnh viễn. Bạn cần phải rất cẩn thận và chỉ sử dụng nó nếu bạn không cần phiên bản gốc của danh sách# List of Integers >>> b = [6, 3, 8, 2, 7, 3, 9] >>> b.sort[] >>> b [2, 3, 3, 6, 7, 8, 9] # List of Strings >>> c = ["A", "Z", "D", "T", "U"] >>> c.sort[] >>> c ['A', 'D', 'T', 'U', 'Z']
Tôi thực sự hy vọng rằng bạn thích bài viết của tôi và thấy nó hữu ích. Bây giờ bạn có thể làm việc với phương thức
# List of Integers
>>> b = [6, 3, 8, 2, 7, 3, 9]
>>> b.sort[]
>>> b
[2, 3, 3, 6, 7, 8, 9]
# List of Strings
>>> c = ["A", "Z", "D", "T", "U"]
>>> c.sort[]
>>> c
['A', 'D', 'T', 'U', 'Z']
7 trong các dự án Python của mình. Kiểm tra các khóa học trực tuyến của tôi. Theo dõi tôi trên Twitter. ⭐️QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Nhà phát triển, nhà văn kỹ thuật và người tạo nội dung @freeCodeCamp. Tôi chạy freeCodeCamp. org Kênh YouTube Español
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu