ZetCode

Python 反转

最后修改于 2024 年 1 月 29 日

在本文中,我们将展示如何反转 Python 序列。

当我们反转项目时,我们更改了它们的顺序。 请注意,反转不应与降序排序混淆。

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

Python 反转列表

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

reverse_list.py
#!/usr/bin/python

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

print(nums)

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

reverse 方法就地反转列表。 nums[::-1] 创建列表的新副本,其中元素已反转。

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

Python reversed 函数

内置函数 reversed 返回一个反向迭代器。

reversed_fun.py
#!/usr/bin/python

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 函数。

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

Python 自定义反转字符串函数

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

custom_string_reverse.py
#!/usr/bin/python

def reverse_string(word):

    rev = ''
    n = len(word)

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

word = 'forest'

print(reverse_string('forest'))

请注意,这仅用于演示目的; 此实现速度很慢。

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
#!/usr/bin/python

class Vowels:

    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 e

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__ 方法。

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

来源

Python 语言参考

在本文中,我们完成了 Python 中的反转操作。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 Python 教程