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 教程。