# Python 反转

> 原文： [http://zetcode.com/python/reverse/](http://zetcode.com/python/reverse/)

在本教程中，我们展示了如何反转 Python 序列。

当我们撤消项目时，我们会更改其顺序。 请注意，不应将反转与降序排序混淆。

Python 列表具有`reverse()`函数。 `[::-1]` 切片操作可反转 Python 序列。 `reversed()`内置函数返回反转迭代器。 内置`reversed()`调用对象的`__reversed__()`魔术方法以实现反转迭代。

## Python 反转列表

在第一个示例中，我们使用`reverse()`方法和`[::-1]`运算符反转 Python 列表。

`reverse_list.py`

```py
#!/usr/bin/env python3

nums = [2, 7, 8, 9, 1, 0]
nums.reverse()

print(nums)

rev_nums = nums[::-1]
print(rev_nums)

```

`reverse()`方法在适当的位置反转列表。 `nums[::-1]`创建一个列表的新副本，其中元素被反转。

```py
$ ./reverse_list.py
[0, 1, 9, 8, 7, 2]

```

这是输出。

## Python `reversed`函数

`reversed()`内置函数返回反转迭代器。

`reversed_fun.py`

```py
#!/usr/bin/env python3

words = ['forest', 'wood', 'sky', 'rock']

for word in reversed(words):
    print(word)

word = 'forest'

for e in reversed(word):
    print(e, end=' ')

print()

for e in reversed(range(1, 10, 2)):
    print(e)

```

在示例中，我们在列表，单词和范围上使用`reversed()`函数。

```py
$ ./reversed_fun.py
rock
sky
wood
forest
t s e r o f
9
7
5
3
1

```

这是输出。

## Python 自定义反转字符串函数

在下面的示例中，我们创建一个自定义字符串反转函数。

`custom_string_reverse.py`

```py
#!/usr/bin/env python3

def reverse_string(word):

    rev = ''
    n = len(word)

    while n > 0:
        n -= 1                 
        rev += word[n] 
    return rev

word = 'forest'

print(reverse_string('forest'))

```

请注意，这只是出于演示目的； 这个实现很慢。

```py
def reverse_string(word):

    rev = ''
    n = len(word)

    while n > 0:
        n -= 1                 
        rev += word[n] 
    return rev

```

在函数中，我们使用`while`循环以相反的顺序构建新字符串。

## Python `__reversed__`方法

`__reversed__()`魔术方法实现应返回一个新的迭代器对象，该对象以相反的顺序遍历容器中的所有对象。

`reversed_magic.py`

```py
#!/usr/bin/env python3

class Vowels(object):

    def __init__(self):

        self.vowels = ['a', 'e', 'i', 'o', 'u', 'y']

    def __len__(self):
        return len(self.vowels)

    def __getitem__(self, e):
        return self.vowels[e]

    def __reversed__(self):
        for e in self.vowels[::-1]:
            yield elem        

vowels = Vowels()

print('normal order:')
for vowel in vowels:
    print(vowel, end=' ')

print()

print('reversed order:')
for vowel in reversed(vowels):
    print(vowel, end=' ')    

print()   

```

在示例中，我们在`Vowels`对象中实现`__reversed__()`方法。

```py
$ ./reversed_magic.py
normal order:
a e i o u y
reversed order:
y u o i e a

```

这是输出。

在本教程中，我们已经在 Python 中完成了反转操作。

您可能也对以下相关教程感兴趣： [Python 教程](/lang/python/)， [Python 集教程](/python/set/)， [Python `for`循环](/python/forloop/)， [Python 列表推导](/articles/pythonlistcomprehensions/)， 和 [Python 映射教程](/python/map/)。