原文: http://zetcode.com/python/reverse/

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

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

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

Python 反转列表

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

reverse_list.py

  1. #!/usr/bin/env python3
  2. nums = [2, 7, 8, 9, 1, 0]
  3. nums.reverse()
  4. print(nums)
  5. rev_nums = nums[::-1]
  6. print(rev_nums)

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

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

这是输出。

Python reversed函数

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

reversed_fun.py

  1. #!/usr/bin/env python3
  2. words = ['forest', 'wood', 'sky', 'rock']
  3. for word in reversed(words):
  4. print(word)
  5. word = 'forest'
  6. for e in reversed(word):
  7. print(e, end=' ')
  8. print()
  9. for e in reversed(range(1, 10, 2)):
  10. print(e)

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

  1. $ ./reversed_fun.py
  2. rock
  3. sky
  4. wood
  5. forest
  6. t s e r o f
  7. 9
  8. 7
  9. 5
  10. 3
  11. 1

这是输出。

Python 自定义反转字符串函数

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

custom_string_reverse.py

  1. #!/usr/bin/env python3
  2. def reverse_string(word):
  3. rev = ''
  4. n = len(word)
  5. while n > 0:
  6. n -= 1
  7. rev += word[n]
  8. return rev
  9. word = 'forest'
  10. print(reverse_string('forest'))

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

  1. def reverse_string(word):
  2. rev = ''
  3. n = len(word)
  4. while n > 0:
  5. n -= 1
  6. rev += word[n]
  7. return rev

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

Python __reversed__方法

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

reversed_magic.py

  1. #!/usr/bin/env python3
  2. class Vowels(object):
  3. def __init__(self):
  4. self.vowels = ['a', 'e', 'i', 'o', 'u', 'y']
  5. def __len__(self):
  6. return len(self.vowels)
  7. def __getitem__(self, e):
  8. return self.vowels[e]
  9. def __reversed__(self):
  10. for e in self.vowels[::-1]:
  11. yield elem
  12. vowels = Vowels()
  13. print('normal order:')
  14. for vowel in vowels:
  15. print(vowel, end=' ')
  16. print()
  17. print('reversed order:')
  18. for vowel in reversed(vowels):
  19. print(vowel, end=' ')
  20. print()

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

  1. $ ./reversed_magic.py
  2. normal order:
  3. a e i o u y
  4. reversed order:
  5. y u o i e a

这是输出。

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

您可能也对以下相关教程感兴趣: Python 教程Python 集教程Python for循环Python 列表推导, 和 Python 映射教程