Python 反转
在本教程中,我们展示了如何 反转 Python 序列 。
当我们撤消项目时,我们会更改其顺序。 请注意,不应将反转与降序排序混淆。
Python 列表具有reverse()
函数。 [::-1]
slice 操作可反转 Python 序列。 reversed()
内置函数返回反转迭代器。 内置reversed()
调用对象的__reversed__()
魔术方法以实现反转迭代。
Python 反转列表
在第一个示例中,我们使用reverse()
方法和[::-1]
运算符反转 Python 列表。
reverse_list.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]
创建一个列表的新副本,其中元素被反转。
| $ ./reverse_list.py
[0, 1, 9, 8, 7, 2]
|
这是输出。
Python reversed
函数
reversed()
内置函数返回反转迭代器。
reversed_fun.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()
函数。
| $ ./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/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'))
|
请注意,这只是出于演示目的; 这个实现很慢。
| 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/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__()
方法。
| $ ./reversed_magic.py
normal order:
a e i o u y
reversed order:
y u o i e a
|
这是输出。
在本教程中,我们已经在 Python 中完成了反转操作。