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:

  • Đảo ngược các danh sách hiện có tại chỗ bằng cách 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]
    
    8 và các kỹ thuật khácin place using
    >>> 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]
    
    8
    and other techniques
  • Tạo các bản sao đảo ngược của các danh sách hiện có bằng cách 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 và cắt lá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]
    
    9
    and slicing
  • Sử dụng lặp lại, toàn diện và đệ quy để tạo danh sách đảo ngượciteration, comprehensions, and recursion to create reversed lists
  • Lặp lại danh sách của bạn theo thứ tự ngược lại over your lists in reverse order
  • Sắp xếp danh sách của bạn theo thứ tự ngược lại bằng cách 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
    your lists in reverse order using
    >>> 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 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

Để 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

>>> 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]
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:

  1. Đảo ngược một danh sách tại chỗ
  2. Tạo các bản sao đảo ngược của một danh sách hiện có

Để đáp ứng thử thách đầu tiên, bạn có thể 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]
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
>>> 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 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

>>> 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]
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
>>> 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]
8:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> digits.reverse()
>>> digits
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Khi bạn gọi

>>> 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]
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
>>> 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]
8 không trả lại một danh sách mới như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]
9:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True

Khi bạn gọi

>>> 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]
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
>>> 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]
8 không trả lại một danh sách mới như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]
9:

Cố gắng gán giá trị trả về củ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]
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
>>> 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]
9 là nhắc nhở người dùng rằ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]
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.

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?

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

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
3 hoặc
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
4 với toán tử lập chỉ mục, như trong
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
5 và
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
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

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
3 với gương của nó tại Index
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
8 trong lần lặp đầu tiên. Sau đó, bạn có thể chuyển phần tử tại Index
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
9 với gương của nó tại Index
>>> fruits = ["apple", "banana", "orange"]

>>> reversed_fruit = reversed(fruits)  # Get the iterator
>>> fruits[-1] = "kiwi"  # Modify the last item
>>> next(reversed_fruit)  # The iterator sees the change
'kiwi'
0 và cứ thế cho đến khi bạn nhận được danh sách đảo ngược.

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?

Ở đây, một đại diện của toàn bộ quá trì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]

Khi bạn gọi

>>> 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]
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
>>> 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]
8 không trả lại một danh sách mới như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]
9:

Cố gắng gán giá trị trả về củ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]
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
>>> 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]
9 là nhắc nhở người dùng rằ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]
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
>>> fruits = ["apple", "banana", "orange"]

>>> list(reversed(fruits))
['orange', 'banana', 'apple']
0 and
>>> fruits = ["apple", "banana", "orange"]

>>> list(reversed(fruits))
['orange', 'banana', 'apple']
1 like this:

>>>

>>> 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]

Khi bạn gọi

>>> 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]
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
>>> 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]
8 không trả lại một danh sách mới như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]
9:

Cố gắng gán giá trị trả về củ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]
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
>>> 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]
9 là nhắc nhở người dùng rằ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]
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ược

Nế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

>>> 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. Với một danh sách là một đố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]
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:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Trong ví dụ này, bạn gọi

>>> 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 với
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
7. Cuộc gọi đến
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ư
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ả:

>>>

>>> fruits = ["apple", "banana", "orange"]

>>> reversed_fruit = reversed(fruits)  # Get the iterator
>>> fruits[-1] = "kiwi"  # Modify the last item
>>> next(reversed_fruit)  # The iterator sees the change
'kiwi'

Trong ví dụ này, bạn gọi

>>> 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 với
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
7. Cuộc gọi đến
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ư
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ả:

>>>

>>> fruits = ["apple", "banana", "orange"]

>>> list(reversed(fruits))
['orange', 'banana', 'apple']

Trong ví dụ này, bạn gọi

>>> 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 với
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
7. Cuộc gọi đến
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ư
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ả:reverse iteration over sequences, as stated in PEP 322. In general,
>>> 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 can take any objects that implement a
>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
2 method or that support the sequence protocol, consisting of the
>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
3 and
>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
4 special methods. So,
>>> 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 isn’t limited to lists:

>>>

>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']

Trong ví dụ này, bạn gọi

>>> 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 với
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
7. Cuộc gọi đến
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ư
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ả:

>>>

>>> digits = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'list_iterator' object is not reversible

Trong ví dụ này, bạn gọi

>>> 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 với
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
7. Cuộc gọi đến
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ư
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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

>>> 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ấy trình lặp tương ứng qua các mục trong
>>> digits = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'list_iterator' object is not reversible
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
>>> digits = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'list_iterator' object is not reversible
3 để có được mục đầu tiên trong
>>> digits = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'list_iterator' object is not reversible
4.

>>>

>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible

Trong ví dụ này, bạn gọi

>>> 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 với
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
6 như một đối số. Sau đó, bạn lưu trữ bộ lặp kết quả trong
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
7. Cuộc gọi đến
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ư
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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

>>> 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ấy trình lặp tương ứng qua các mục trong
>>> digits = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'list_iterator' object is not reversible
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
>>> digits = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'list_iterator' object is not reversible
3 để có được mục đầu tiên trong
>>> digits = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'list_iterator' object is not reversible
4.

Nếu bạn cần nhận bản sao

>>> digits = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'list_iterator' object is not reversible
2 bằ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, thì bạn có thể gọi
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
8:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
0

Như bạn đã biết, cuộc gọi đến

>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
8 tiêu thụ trình lặp lại xuất phát từ việc gọi
>>> 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. 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

>>> 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, 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,
>>> 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 có thể lấy bất kỳ đối tượng nào thực hiện phương pháp
>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
2 hoặc hỗ trợ giao thức trình tự, bao gồm các 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 "", line 1, in 
TypeError: 'set' object is not reversible
3 và ____94. Vì vậy,
>>> 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 isn giới hạn trong danh sách:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
1

Ở đây, thay vì một danh sách, bạn chuyển một đối tượng

>>> fruits = ["apple", "banana", "orange"]

>>> reversed_fruit = reversed(fruits)  # Get the iterator
>>> fruits[-1] = "kiwi"  # Modify the last item
>>> next(reversed_fruit)  # The iterator sees the change
'kiwi'
2 và một chuỗi làm đối số 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]
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

>>> 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 với các trình lặp tùy ý:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
2

Trong ví dụ này,

>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
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
>>> 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 trên
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
6, bạn sẽ nhận được
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
02.

Trình lặp thực hiện phương pháp đặc biệt

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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
>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
2 hoặc giao thức trình tự. Vì vậy,
>>> 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 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
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
8.

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
3

Tại đây, bạn yêu cầu Python cung cấp cho bạn danh sách đầy đủ (

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
12 thành
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
8. Điều này khá gọn gàng, như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 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

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
45. Nghe có vẻ phức tạp, vì vậy đây là một số ví dụ về cách
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
44 hoạt động:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
4

Cuộc gọi đầu tiên đến

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
44 tương đương với
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
48. Cuộc gọi thứ hai hoạt động giống như
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
49. Bạn cũng có thể mô phỏng việc cắt
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
40 bằng
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
51. Trong trường hợp này, 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]
9 đến
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
15 và
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
44 để tạo bản sao đảo ngược của danh sách hiện có:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
5

Đối tượng

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
56 trích xuất tất cả các mục từ
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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 tay

Cho đế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ặp

Kỹ 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

>>> 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]
2 và cách ghép danh sách bằng biểu tượng Plus (
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
59):

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
6

Mỗi lần lặp của vòng lặp

>>> 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]
2 đều có một mục tiếp theo từ
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
14 và tạo một danh sách mới xuất phát từ việc kết hợp
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
62 và
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
63. Chức năng này không sửa đổi
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
14.

Bạn cũng có thể tận dụng

>>> fruits = ["apple", "banana", "orange"]

>>> list(reversed(fruits))
['orange', 'banana', 'apple']
1 để tạo danh sách đảo ngược với sự trợ giúp của một vòng lặp:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
7

Cuộc gọi đến

>>> fruits = ["apple", "banana", "orange"]

>>> list(reversed(fruits))
['orange', 'banana', 'apple']
1 bên trong vòng lặp chèn các mục tiếp theo tại chỉ số
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
3 của
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
14 theo thứ tự ngược lại.

Sử dụng

>>> fruits = ["apple", "banana", "orange"]

>>> list(reversed(fruits))
['orange', 'banana', 'apple']
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 đệ quy

Bạ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:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
8

Bên trong

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
73 cung cấp trường hợp đệ quy, đó là một cuộc gọi đến chính
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
72 nhưng với một lát của danh sách ban đầu,
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
75. Đụ này chứa tất cả các mục trong
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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 (
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
77) vào kết quả của cuộc gọi đệ quy.

Cuộc gọi được nhận xét đến

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
78 khi bắt đầu điều khoản
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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ết

Nế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:

>>>

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
9

Sự kỳ diệu trong danh sách hiểu biết này xuất phát từ cuộc gọi đến

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
80. Trong trường hợp này,
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
80 trả về các chỉ số từ
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
37 trở lại
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = reversed(digits)
>>> reversed_digits


>>> list(reversed_digits)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
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
>>> list(reversed(range(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> list(reversed("Python"))
['n', 'o', 'h', 't', 'y', 'P']
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ại

Cho đế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:

  • Chức năng tích hợp
    >>> 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
  • Người vận hành cắt lát,
    >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    >>> reversed_digits = digits.reverse()
    >>> reversed_digits is None
    True
    
    86
  • 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 "", line 1, in 
    TypeError: 'set' object is not reversible
    
    2

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ợp

Cá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

>>> 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. 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

>>> 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ặp lại thông qua các mục trong danh sách theo thứ tự ngược lại:

>>>

>>> 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]
0

Điều đầu tiên cần lưu ý trong ví dụ này là vòng lặp

>>> 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]
2 rất dễ đọc. Tên củ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]
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ì

>>> 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 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 40

Cá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

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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:

>>>

>>> 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

Khi 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

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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:

>>>

>>> 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]
2

Ở đây, vòng lặp lặp lại thông qua một bản sao đảo ngược của

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
97. Cuộc gọi đến
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
97 trong quá trình lặp. Sau đó, vòng lặp sửa đổi
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
97 bằng cách thay thế từng mục bằng giá trị vuông của nó. Do đó,
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
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 "", line 1, in TypeError: 'set' object is not reversible 2

Danh sách Python thực hiện một phương thức đặc biệt gọi là

>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
2 cho phép lặp lại. Phương pháp này cung cấp logic đằng sau
>>> 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. Nói cách khác, một cuộc gọi đế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]
9 với một danh sách dưới dạng đối số kích hoạt một cuộc gọi ngầm đến
>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
2 trên danh sách đầu vào.

Phương thức đặc biệt này trả về một trình lặp qua các mục của danh sách hiện tại theo thứ tự ngược lại. Tuy nhiên,

>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
2 không được sử dụng trực tiếp. Hầu hết thời gian, bạn sẽ sử dụng nó để trang bị cho các lớp học của riêng bạn khả năng lặp lại.

Ví dụ: giả sử bạn muốn lặp lại một loạt các số điểm nổi. Bạn có thể sử dụng

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
80, vì vậy bạn quyết định tạo lớp của riêng mình để tiếp cận trường hợp sử dụng cụ thể này. Bạn kết thúc với một lớp học như thế này:

>>> 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]
3

Lớp học này là hoàn hảo. Nó chỉ là phiên bản đầu tiên của bạn. Tuy nhiên, nó cho phép bạn lặp lại thông qua một khoảng số các số điểm nổi bằng cách sử dụng giá trị gia tăng cố định,

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
12. Trong lớp của bạn,
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
04 cung cấp hỗ trợ cho phép lặp bình thường và
>>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> reversed(digits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'set' object is not reversible
2 hỗ trợ lặp lại.

Để 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]
12, bạn có thể làm điều gì đó như thế này:

>>>

>>> 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]
4

Lớp hỗ trợ lặp lại bình thường, như đã đề cập, được cung cấp bởi

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
04. Bây giờ bạn có thể thử lặp lại theo thứ tự ngược lại bằng cách 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:

>>>

>>> 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]
5

Lớp hỗ trợ lặp lại bình thường, như đã đề cập, được cung cấp bởi

>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
04. Bây giờ bạn có thể thử lặp lại theo thứ tự ngược lại bằng cách 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:

Trong ví dụ này, >>> 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 dựa vào triển khai >>> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} >>> reversed(digits) Traceback (most recent call last): File "", line 1, in TypeError: 'set' object is not reversible 2 của bạn để cung cấp chức năng lặp ngược. Bằng cách này, bạn có một trình lặp dấu nổi làm việc.

Đảo ngược danh sách Python: Tóm tắt

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:
>>> 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]
8
>>> 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
>>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed_digits = digits.reverse()
>>> reversed_digits is None
True
40
Tính năngVòngDanh sách comp
Đệ quySử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]
6

Là 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]
7

Nhì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

>>> 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 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) // 2):
...     digits[i], digits[-1 - i] = digits[-1 - i], digits[i]
...

>>> 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:

  • 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
    >>> 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]
    
    8
    and other techniques
  • 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
    >>> 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. 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) // 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ố 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
  • Đố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 cho
    >>> 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 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
  • 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
    >>> 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 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

Trong hướng dẫn này, bạn đã học được cách: