Hướng dẫn how do you manually reverse a list in python? - làm cách nào để đảo ngược danh sách trong python theo cách thủ công?
Bạn đang lặn sâu hơn vào danh sách Python và muốn tìm hiểu về các cách khác nhau để đảo ngược chúng? Nếu vậy, thì hướng dẫn này là dành cho bạn. Tại đây, bạn sẽ tìm hiểu về một vài công cụ và kỹ thuật Python tiện dụng khi nói đến việc đảo ngược danh sách hoặc thao túng chúng theo thứ tự ngược lại. Kiến thức này sẽ bổ sung và cải thiện các kỹ năng liên quan đến danh sách của bạn và làm cho bạn thành thạo hơn với họ. Show
Trong hướng dẫn này, bạn sẽ học cách:
Để tận dụng tối đa hướng dẫn này, sẽ rất hữu ích khi biết những điều cơ bản của các vòng lặp, vòng lặp 2, danh sách, danh sách toàn diện, biểu thức máy phát và đệ quy.Đảo ngược danh sách PythonĐôi khi bạn cần xử lý các danh sách Python bắt đầu từ phần tử cuối cùng đến phần đầu tiên nói cách khác, theo thứ tự ngược lại. Nhìn chung, có hai thách thức chính liên quan đến việc làm việc với các danh sách ngược lại:reverse order. In general, there are two main challenges related to working with lists in reverse:
Để đáp ứng thử thách đầu tiên, bạn có thể sử dụng 8 hoặc vòng lặp hoán đổi các mục theo chỉ mục. Đối với lần thứ hai, bạn có thể sử dụng 9 hoặc hoạt động cắt lát. Trong các phần tiếp theo, bạn sẽ tìm hiểu về các cách khác nhau để thực hiện cả hai trong mã của bạn.Danh sách đảo ngược tại chỗGiống như các loại chuỗi có thể thay đổi khác, danh sách Python thực hiện 8. Phương pháp này đảo ngược danh sách cơ bản tại chỗ cho hiệu suất bộ nhớ khi bạn đảo ngược các đối tượng danh sách lớn. Đây là cách bạn có thể sử dụng 8:>>>
Khi bạn gọi 8 trên một danh sách hiện có, phương thức đảo ngược nó tại chỗ. Bằng cách này, khi bạn truy cập lại danh sách, bạn sẽ nhận được nó theo thứ tự ngược lại. Lưu ý rằng 8 không trả lại một danh sách mới nhưng 9:>>>
Khi bạn gọi 8 trên một danh sách hiện có, phương thức đảo ngược nó tại chỗ. Bằng cách này, khi bạn truy cập lại danh sách, bạn sẽ nhận được nó theo thứ tự ngược lại. Lưu ý rằng 8 không trả lại một danh sách mới nhưng 9:Cố gắng gán giá trị trả về của 8 cho một biến là một sai lầm phổ biến liên quan đến việc sử dụng phương pháp này. Mục đích của việc trả lại 9 là nhắc nhở người dùng rằng 8 hoạt động bằng hiệu ứng phụ, thay đổi danh sách cơ bản.Được chứ! Đó là nhanh chóng và đơn giản! Bây giờ, làm thế nào bạn có thể đảo ngược một danh sách tại chỗ bằng tay? Một kỹ thuật phổ biến là lặp qua nửa đầu của nó trong khi hoán đổi từng phần tử bằng đối tác gương của nó trên nửa sau của danh sách. Python cung cấp các chỉ số tích cực dựa trên 0 để đi bộ từ trái sang phải. Nó cũng cho phép bạn điều hướng các chuỗi từ phải sang trái bằng các chỉ số âm: Sơ đồ này cho thấy bạn có thể truy cập phần tử đầu tiên của danh sách (hoặc chuỗi) bằng cách sử dụng 3 hoặc 4 với toán tử lập chỉ mục, như trong 5 và 6, tương ứng. Bạn có thể sử dụng tính năng Python này để đảo ngược chuỗi cơ bản tại chỗ.Ví dụ: để đảo ngược danh sách được biểu thị trong sơ đồ, bạn có thể lặp trong nửa đầu của danh sách và trao đổi phần tử tại Index 3 với gương của nó tại Index 8 trong lần lặp đầu tiên. Sau đó, bạn có thể chuyển phần tử tại Index 9 với gương của nó tại Index 0 và cứ thế cho đến khi bạn nhận được danh sách đảo ngược.Ở đây, một đại diện của toàn bộ quá trình: >>>
Khi bạn gọi 8 trên một danh sách hiện có, phương thức đảo ngược nó tại chỗ. Bằng cách này, khi bạn truy cập lại danh sách, bạn sẽ nhận được nó theo thứ tự ngược lại. Lưu ý rằng 8 không trả lại một danh sách mới nhưng 9:Cố gắng gán giá trị trả về của 8 cho một biến là một sai lầm phổ biến liên quan đến việc sử dụng phương pháp này. Mục đích của việc trả lại 9 là nhắc nhở người dùng rằng 8 hoạt động bằng hiệu ứng phụ, thay đổi danh sách cơ bản.index substitution, there
are a few different ways to reverse lists by hand. For example, you can use 0 and 1 like this:>>>
Khi bạn gọi 8 trên một danh sách hiện có, phương thức đảo ngược nó tại chỗ. Bằng cách này, khi bạn truy cập lại danh sách, bạn sẽ nhận được nó theo thứ tự ngược lại. Lưu ý rằng 8 không trả lại một danh sách mới nhưng 9:Cố gắng gán giá trị trả về của 8 cho một biến là một sai lầm phổ biến liên quan đến việc sử dụng phương pháp này. Mục đích của việc trả lại 9 là nhắc nhở người dùng rằng 8 hoạt động bằng hiệu ứng phụ, thay đổi danh sách cơ bản.Tạo danh sách đảo ngượcNếu bạn muốn tạo một bản sao đảo ngược của một danh sách hiện có trong Python, thì bạn có thể sử dụng 9. Với một danh sách là một đối số, 9 trả về một trình lặp lại mang lại các mục theo thứ tự ngược lại:>>>
Trong ví dụ này, bạn gọi 9 với 6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong 7. Cuộc gọi đến 8 tiêu thụ trình lặp và trả về một danh sách mới chứa các mục tương tự như 6 nhưng theo thứ tự ngược lại.Một điểm quan trọng cần lưu ý khi bạn sử dụng 9 là nó không tạo ra một bản sao của danh sách đầu vào, do đó, các thay đổi trên nó ảnh hưởng đến trình lặp kết quả:>>>
Trong ví dụ này, bạn gọi 9 với 6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong 7. Cuộc gọi đến 8 tiêu thụ trình lặp và trả về một danh sách mới chứa các mục tương tự như 6 nhưng theo thứ tự ngược lại.Một điểm quan trọng cần lưu ý khi bạn sử dụng 9 là nó không tạo ra một bản sao của danh sách đầu vào, do đó, các thay đổi trên nó ảnh hưởng đến trình lặp kết quả:>>>
Trong ví dụ này, bạn gọi 9 với 6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong 7. Cuộc gọi đến 8 tiêu thụ trình lặp và trả về một danh sách mới chứa các mục tương tự như 6 nhưng theo thứ tự ngược lại.
Một điểm quan trọng cần lưu ý khi bạn sử dụng 9 là nó không tạo ra một bản sao của danh sách đầu vào, do đó, các thay đổi trên nó ảnh hưởng đến trình lặp kết quả:reverse iteration over sequences, as stated in PEP 322. In general, 9 can take any objects that implement a 2 method or that
support the sequence protocol, consisting of the 3 and 4 special methods. So, 9 isn’t limited to lists:>>>
Trong ví dụ này, bạn gọi 9 với 6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong 7. Cuộc gọi đến 8 tiêu thụ trình lặp và trả về một danh sách mới chứa các mục tương tự như 6 nhưng theo thứ tự ngược lại.Một điểm quan trọng cần lưu ý khi bạn sử dụng 9 là nó không tạo ra một bản sao của danh sách đầu vào, do đó, các thay đổi trên nó ảnh hưởng đến trình lặp kết quả:>>>
Trong ví dụ này, bạn gọi 9 với 6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong 7. Cuộc gọi đến 8 tiêu thụ trình lặp và trả về một danh sách mới chứa các mục tương tự như 6 nhưng theo thứ tự ngược lại.Một điểm quan trọng cần lưu ý khi bạn sử dụng 9 là nó không tạo ra một bản sao của danh sách đầu vào, do đó, các thay đổi trên nó ảnh hưởng đến trình lặp kết quả:Trong ví dụ này, bạn gọi 9 để lấy trình lặp tương ứng qua các mục trong 2. Sau đó, bạn sửa đổi trái cây cuối cùng. Thay đổi này ảnh hưởng đến người lặp. Bạn có thể xác nhận rằng bằng cách gọi 3 để có được mục đầu tiên trong 4.>>>
Trong ví dụ này, bạn gọi 9 với 6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong 7. Cuộc gọi đến 8 tiêu thụ trình lặp và trả về một danh sách mới chứa các mục tương tự như 6 nhưng theo thứ tự ngược lại.Một điểm quan trọng cần lưu ý khi bạn sử dụng >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits) // 2): ... digits[i], digits[-1 - i] = digits[-1 - i], digits[i] ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 9 là nó không tạo ra một bản sao của danh sách đầu vào, do đó, các thay đổi trên nó ảnh hưởng đến trình lặp kết quả:Trong ví dụ này, bạn gọi 9 để lấy trình lặp tương ứng qua các mục trong 2. Sau đó, bạn sửa đổi trái cây cuối cùng. Thay đổi này ảnh hưởng đến người lặp. Bạn có thể xác nhận rằng bằng cách gọi 3 để có được mục đầu tiên trong 4.Nếu bạn cần nhận bản sao 2 bằng 9, thì bạn có thể gọi 8:>>> 0Như bạn đã biết, cuộc gọi đến 8 tiêu thụ trình lặp lại xuất phát từ việc gọi 9. Bằng cách này, bạn tạo một danh sách mới như một bản sao đảo ngược của bản gốc.Python 2.4 đã thêm 9, một công cụ phổ quát để tạo điều kiện lặp lại các chuỗi, như đã nêu trong PEP 322. Nói chung, 9 có thể lấy bất kỳ đối tượng nào thực hiện phương pháp 2 hoặc hỗ trợ giao thức trình tự, bao gồm các phương pháp đặc biệt 3 và ____94. Vì vậy, 9 isn giới hạn trong danh sách:>>> 1Ở đây, thay vì một danh sách, bạn chuyển một đối tượng 2 và một chuỗi làm đối số cho 9. Chức năng thực hiện công việc của nó như mong đợi và bạn nhận được một phiên bản đảo ngược của dữ liệu đầu vào.Một điểm quan trọng khác để làm nổi bật là bạn có thể sử dụng 9 với các trình lặp tùy ý:>>> 2Trong ví dụ này, 9 xây dựng một trình lặp qua danh sách các số của bạn. Khi bạn gọi 9 trên 6, bạn sẽ nhận được 02.Trình lặp thực hiện phương pháp đặc biệt 03 để đi qua dữ liệu cơ bản. Họ cũng dự kiến sẽ thực hiện phương pháp đặc biệt 04 để trả về phiên bản lặp hiện tại. Tuy nhiên, họ không dự kiến sẽ thực hiện 2 hoặc giao thức trình tự. Vì vậy, 9 không làm việc cho họ. Nếu bạn cần đảo ngược một trình lặp như thế này, thì trước tiên bạn nên chuyển đổi nó thành một danh sách bằng cách sử dụng 8.>>> 3Tại đây, bạn yêu cầu Python cung cấp cho bạn danh sách đầy đủ ( 40) nhưng đi qua tất cả các mục từ phía trước sang phía trước bằng cách đặt 12 thành 8. Điều này khá gọn gàng, nhưng 9 hiệu quả hơn về thời gian thực hiện và sử dụng bộ nhớ. Nó cũng dễ đọc và rõ ràng hơn. Vì vậy, đây là những điểm cần xem xét trong mã của bạn.Một kỹ thuật khác để tạo ra một bản sao đảo ngược của một danh sách hiện có là sử dụng 44. Chữ ký của chức năng tích hợp này như thế này:Hàm này hoạt động tương tự như toán tử lập chỉ mục. Nó có ba đối số có ý nghĩa tương tự như các đối số được sử dụng trong toán tử cắt và trả về một đối tượng lát cắt biểu thị tập hợp các chỉ số được trả về bởi 45. Nghe có vẻ phức tạp, vì vậy đây là một số ví dụ về cách 44 hoạt động:>>> 4Cuộc gọi đầu tiên đến 44 tương đương với 48. Cuộc gọi thứ hai hoạt động giống như 49. Bạn cũng có thể mô phỏng việc cắt 40 bằng 51. Trong trường hợp này, chuyển 9 đến 15 và 23 có nghĩa là bạn muốn một lát từ đầu đến cuối chuỗi mục tiêu.Tại đây, cách bạn có thể sử dụng 44 để tạo bản sao đảo ngược của danh sách hiện có:>>> 5Đối tượng 56 trích xuất tất cả các mục từ 6, bắt đầu từ đầu bên phải trở lại đầu trái và trả về một bản sao đảo ngược của danh sách đích.Tạo danh sách đảo ngược bằng tayCho đến nay, bạn đã thấy một vài công cụ và kỹ thuật để đảo ngược danh sách tại chỗ hoặc tạo các bản sao đảo ngược của các danh sách hiện có. Hầu hết thời gian, các công cụ và kỹ thuật này là cách để đi khi nói đến việc đảo ngược các danh sách trong Python. Tuy nhiên, nếu bạn cần phải đảo ngược danh sách bằng tay, thì nó sẽ có lợi cho bạn để hiểu logic đằng sau quá trình này. Trong phần này, bạn sẽ học cách đảo ngược danh sách Python bằng cách sử dụng các vòng lặp, đệ quy và toàn diện. Ý tưởng là để có được một danh sách và tạo một bản sao của nó theo thứ tự ngược lại. Sử dụng một vòng lặpKỹ thuật đầu tiên mà bạn sẽ sử dụng để đảo ngược danh sách liên quan đến vòng lặp 2 và cách ghép danh sách bằng biểu tượng Plus ( 59):>>> 6Mỗi lần lặp của vòng lặp 2 đều có một mục tiếp theo từ 14 và tạo một danh sách mới xuất phát từ việc kết hợp 62 và 63, ban đầu giữ một danh sách trống. Danh sách mới được tạo được chỉ định lại thành 63. Chức năng này không sửa đổi 14.Bạn cũng có thể tận dụng 1 để tạo danh sách đảo ngược với sự trợ giúp của một vòng lặp:>>> 7Cuộc gọi đến 1 bên trong vòng lặp chèn các mục tiếp theo tại chỉ số 3 của 63. Ở cuối vòng lặp, bạn nhận được một danh sách mới với các mục của 14 theo thứ tự ngược lại.Sử dụng 1 như trong ví dụ trên có một nhược điểm đáng kể. Các hoạt động chèn ở đầu bên trái của danh sách Python được biết là không hiệu quả về thời gian thực hiện. Điều đó vì Python cần di chuyển tất cả các mục một bước lùi để chèn mục mới ở vị trí đầu tiên.Sử dụng đệ quyBạn cũng có thể sử dụng đệ quy để đảo ngược danh sách của bạn. Đệ quy là khi bạn xác định một hàm tự gọi. Điều này tạo ra một vòng lặp có thể trở thành vô hạn nếu bạn không cung cấp một trường hợp cơ sở tạo ra kết quả mà không gọi lại chức năng.base case that produces a result without calling the function again. Bạn cần trường hợp cơ sở để kết thúc vòng lặp đệ quy. Khi nói đến danh sách đảo ngược, trường hợp cơ sở sẽ đạt được khi các cuộc gọi đệ quy đi đến cuối danh sách đầu vào. Bạn cũng cần xác định trường hợp đệ quy, giúp giảm tất cả các trường hợp liên tiếp cho trường hợp cơ sở và do đó, đến cuối vòng lặp.recursive case, which reduces all successive cases toward the base case and, therefore, to the loop’s end. Tại đây, cách bạn có thể xác định chức năng đệ quy để trả về bản sao đảo ngược của một danh sách nhất định: >>> 8Bên trong 72, trước tiên bạn kiểm tra trường hợp cơ sở, trong đó danh sách đầu vào trống và làm cho chức năng trở lại. Điều khoản 73 cung cấp trường hợp đệ quy, đó là một cuộc gọi đến chính 72 nhưng với một lát của danh sách ban đầu, 75. Đụ này chứa tất cả các mục trong 14 ngoại trừ mục đầu tiên, sau đó được thêm vào dưới dạng danh sách một mục ( 77) vào kết quả của cuộc gọi đệ quy.Cuộc gọi được nhận xét đến 78 khi bắt đầu điều khoản 73 chỉ là một mẹo nhằm cho thấy các cuộc gọi tiếp theo làm giảm danh sách đầu vào đối với trường hợp cơ sở. Hãy tiếp tục và giải thoát dòng để xem những gì xảy ra!Sử dụng danh sách hiểu biếtNếu bạn làm việc với các danh sách trong Python, thì có lẽ bạn muốn xem xét sử dụng khả năng hiểu danh sách. Công cụ này khá phổ biến trong không gian Python vì nó đại diện cho cách Pythonic để xử lý danh sách. Dưới đây, một ví dụ về cách sử dụng danh sách hiểu để tạo danh sách đảo ngược: >>> 9Sự kỳ diệu trong danh sách hiểu biết này xuất phát từ cuộc gọi đến 80. Trong trường hợp này, 80 trả về các chỉ số từ 37 trở lại 3. Điều này làm cho vòng lặp hiểu được lặp lại trên các mục trong 6 ngược lại, tạo ra một danh sách đảo ngược mới trong quá trình.Lặp lại thông qua các danh sách ngược lạiCho đến thời điểm này, bạn đã học được cách tạo danh sách đảo ngược và cũng là cách đảo ngược các danh sách hiện có tại chỗ, bằng cách sử dụng các công cụ được thiết kế đặc biệt để thực hiện nhiệm vụ đó hoặc bằng cách sử dụng các giải pháp được mã hóa bằng tay của riêng bạn. Trong lập trình hàng ngày, bạn có thể thấy rằng việc lặp lại thông qua các danh sách và trình tự hiện có theo thứ tự ngược lại, thường được gọi là lặp lại, là một yêu cầu khá phổ biến. Nếu đó là trường hợp của bạn, thì bạn có một số tùy chọn. Tùy thuộc vào nhu cầu cụ thể của bạn, bạn có thể sử dụng:reverse iteration, is a fairly common requirement. If that’s your case, then you have several options. Depending on your specific needs, you can use:
Trong một vài phần sau, bạn sẽ tìm hiểu về tất cả các tùy chọn này và cách chúng có thể giúp bạn lặp lại danh sách theo thứ tự ngược lại. Chức năng >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits) // 2): ... digits[i], digits[-1 - i] = digits[-1 - i], digits[i] ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 9 tích hợpCách tiếp cận đầu tiên của bạn để lặp qua một danh sách theo thứ tự ngược lại có thể là sử dụng 9. Chức năng tích hợp này được thiết kế đặc biệt để hỗ trợ lặp lại. Với một danh sách là một đối số, nó trả về một trình lặp lại mang lại các mục trong danh sách đầu vào theo thứ tự ngược lại.Tại đây, cách bạn có thể sử dụng 9 để lặp lại thông qua các mục trong danh sách theo thứ tự ngược lại:>>> 0Điều đầu tiên cần lưu ý trong ví dụ này là vòng lặp 2 rất dễ đọc. Tên của 9 thể hiện rõ ràng ý định của nó, với chi tiết tinh tế của việc truyền đạt rằng chức năng không tạo ra bất kỳ tác dụng phụ nào. Nói cách khác, nó không sửa đổi danh sách đầu vào.Vòng lặp cũng hiệu quả về mặt sử dụng bộ nhớ vì 9 trả về một trình lặp mang lại các mục theo yêu cầu mà không lưu trữ tất cả chúng trong bộ nhớ cùng một lúc. Một lần nữa, một chi tiết tinh tế cần lưu ý là nếu danh sách đầu vào thay đổi trong quá trình lặp, thì trình lặp lại thấy các thay đổi.Toán tử cắt, >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> reversed_digits = digits.reverse() >>> reversed_digits is None True 40Cách tiếp cận thứ hai để lặp lại lặp lại là sử dụng cú pháp cắt kéo dài mà bạn đã thấy trước đó. Cú pháp này không làm gì có lợi cho hiệu quả bộ nhớ, vẻ đẹp hoặc sự rõ ràng. Tuy nhiên, nó cung cấp một cách nhanh chóng để lặp lại một bản sao đảo ngược của một danh sách hiện có mà không có nguy cơ bị ảnh hưởng bởi những thay đổi trong danh sách ban đầu. Tại đây, cách bạn có thể sử dụng 40 để lặp lại thông qua một bản sao của một danh sách hiện có theo thứ tự ngược lại:>>> 1Khi bạn cắt một danh sách như trong ví dụ này, bạn tạo một bản sao đảo ngược của danh sách ban đầu. Ban đầu, cả hai danh sách đều chứa các tham chiếu đến cùng một nhóm các mục. Tuy nhiên, nếu bạn gán một giá trị mới cho một mục đã cho trong danh sách ban đầu, như trong 96, thì tham chiếu sẽ thay đổi để trỏ đến giá trị mới. Bằng cách này, những thay đổi trong danh sách đầu vào don don ảnh hưởng đến bản sao.Bạn có thể tận dụng loại cắt lát này để sửa đổi danh sách ban đầu một cách an toàn trong khi bạn lặp lại các mục cũ của nó theo thứ tự ngược lại. Ví dụ: giả sử bạn cần lặp lại danh sách các số theo thứ tự ngược lại và thay thế mọi số bằng giá trị vuông của nó. Trong trường hợp này, bạn có thể làm một cái gì đó như thế này: >>> 2Ở đây, vòng lặp lặp lại thông qua một bản sao đảo ngược của 97. Cuộc gọi đến 98 cung cấp các chỉ số dựa trên số không tăng dần cho mỗi mục trong bản sao đảo ngược. Điều đó cho phép bạn sửa đổi 97 trong quá trình lặp. Sau đó, vòng lặp sửa đổi 97 bằng cách thay thế từng mục bằng giá trị vuông của nó. Do đó, 97 kết thúc chứa các giá trị vuông theo thứ tự ngược lại.Phương pháp đặc biệt >>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> reversed(digits)
Traceback (most recent call last):
File " |
Cho đến thời điểm này, bạn đã học được rất nhiều về việc đảo ngược các danh sách bằng các công cụ và kỹ thuật khác nhau. Ở đây, một bảng tóm tắt các điểm quan trọng hơn mà bạn đã đề cập: | 8 | 9 | 40 | Tính năng | Vòng | Danh sách comp |
---|---|---|---|---|---|---|
Đệ quy | Sửa đổi danh sách tại chỗ | ✔ | ✔ | ❌ | ✔ | ✔ |
❌ | ✔ | ✔ | Sửa đổi danh sách tại chỗ | ❌ | Sửa đổi danh sách tại chỗ | Sửa đổi danh sách tại chỗ |
✔ | Sửa đổi danh sách tại chỗ | Sửa đổi danh sách tại chỗ | ✔ | ✔ | Sửa đổi danh sách tại chỗ | ✔ |
❌ | ✔ | Sửa đổi danh sách tại chỗ | Sửa đổi danh sách tại chỗ | Sửa đổi danh sách tại chỗ | Sửa đổi danh sách tại chỗ | Sửa đổi danh sách tại chỗ |
✔
❌
✔/
Tạo một bản sao của danh sách
>>>
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits) // 2):
... digits[i], digits[-1 - i] = digits[-1 - i], digits[i]
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
6Là nhanh
Là phổ quát
>>>
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits) // 2):
... digits[i], digits[-1 - i] = digits[-1 - i], digits[i]
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
7Nhìn nhanh vào bản tóm tắt này sẽ cho phép bạn quyết định sử dụng công cụ hoặc kỹ thuật nào khi bạn đảo ngược danh sách tại chỗ, tạo các bản sao đảo ngược của danh sách hiện có hoặc lặp lại danh sách của bạn theo thứ tự ngược lại.
Sắp xếp danh sách python theo thứ tự ngược lại
Một lựa chọn thú vị khác khi nói đến việc đảo ngược các danh sách trong Python là sử dụng
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits)):
... last_item = digits.pop()
... digits.insert(i, last_item)
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
0 và >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits)):
... last_item = digits.pop()
... digits.insert(i, last_item)
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
1 để sắp xếp chúng theo thứ tự ngược lại. Để làm điều đó, bạn có thể chuyển >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits) // 2):
... digits[i], digits[-1 - i] = digits[-1 - i], digits[i]
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22 cho đối số >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits) // 2):
... digits[i], digits[-1 - i] = digits[-1 - i], digits[i]
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23 tương ứng của họ.reverse order might be a fairly common task in your day-to-day work as a Python coder. In this tutorial, you took advantage of a couple of Python tools and techniques to reverse your lists and manage them in reverse order.Mục tiêu của
0 là sắp xếp các mục của một danh sách. Việc sắp xếp được thực hiện tại chỗ, vì vậy nó không tạo ra một danh sách mới. Nếu bạn đặt đối số từ khóa >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits)):
... last_item = digits.pop()
... digits.insert(i, last_item)
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23 thành >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits) // 2):
... digits[i], digits[-1 - i] = digits[-1 - i], digits[i]
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22, thì bạn sẽ sắp xếp danh sách theo thứ tự giảm dần hoặc ngược:>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(digits) // 2):
... digits[i], digits[-1 - i] = digits[-1 - i], digits[i]
...
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
- Bây giờ danh sách của bạn được sắp xếp đầy đủ và cũng theo thứ tự ngược lại. Điều này khá thuận tiện khi bạn làm việc với một số dữ liệu và bạn cần sắp xếp nó và đảo ngược nó cùng một lúc.in place using
8 and other techniques>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits) // 2): ... digits[i], digits[-1 - i] = digits[-1 - i], digits[i] ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
- Mặt khác, nếu bạn muốn lặp lại một danh sách được sắp xếp theo thứ tự ngược lại, thì bạn có thể sử dụng
1. Hàm tích hợp này trả về một danh sách mới chứa tất cả các mục của đầu vào có thể theo thứ tự. Nếu bạn chuyển>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits)): ... last_item = digits.pop() ... digits.insert(i, last_item) ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22 cho đối số từ khóa>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits) // 2): ... digits[i], digits[-1 - i] = digits[-1 - i], digits[i] ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23 của nó, thì bạn sẽ nhận được một bản sao đảo ngược của danh sách ban đầu:>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits) // 2): ... digits[i], digits[-1 - i] = digits[-1 - i], digits[i] ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
9 and slicing to create reversed copies of your lists>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits) // 2): ... digits[i], digits[-1 - i] = digits[-1 - i], digits[i] ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
- Đối số
23 cho>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits) // 2): ... digits[i], digits[-1 - i] = digits[-1 - i], digits[i] ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
1 cho phép bạn sắp xếp các phép lặp theo thứ tự giảm dần thay vì theo thứ tự tăng dần. Vì vậy, nếu bạn cần tạo danh sách được sắp xếp theo thứ tự ngược lại, thì>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits)): ... last_item = digits.pop() ... digits.insert(i, last_item) ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
1 là dành cho bạn.iteration, comprehensions, and recursion to create reversed lists>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits)): ... last_item = digits.pop() ... digits.insert(i, last_item) ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
- Sự kết luận through your lists in reverse order
- Đảo ngược và làm việc với các danh sách theo thứ tự ngược lại có thể là một nhiệm vụ khá phổ biến trong công việc hàng ngày của bạn với tư cách là một lập trình viên Python. Trong hướng dẫn này, bạn đã tận dụng một vài công cụ và kỹ thuật Python để đảo ngược danh sách của bạn và quản lý chúng theo thứ tự ngược lại. lists in reverse order using
0 and>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits)): ... last_item = digits.pop() ... digits.insert(i, last_item) ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
1>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(digits)): ... last_item = digits.pop() ... digits.insert(i, last_item) ... >>> digits [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Trong hướng dẫn này, bạn đã học được cách: