如何在 Python 中反转列表
-
在 Python 中使用
range()
来反转一个列表 -
在 Python 中通过
while
循环来反转一个列表 - 使用 Python 中的切片运算符反转一个列表
-
在 Python 中使用
reversed()
反转列表
本教程将演示如何在 Python 中用不同的方式来反转一个列表。
列表反转是学习编程时最常遇到的入门编程问题之一。在 Python 中,有几种简单的方法可以反转一个列表。
在 Python 中使用 range()
来反转一个列表
range()
是一个 Python 内置函数,它输出一个数字范围的列表。
range()
的语法
range(start, stop, step)
这个函数有 3 个参数;主要的必要参数是第二个参数 stop
,一个表示你要停止的数字。有 2 个可选参数,start
指定你应该从哪里开始计数,step
指定序列的增量。
请注意,stop
的偏移量为 1,因为计数是从 0
开始的。要使用 range()
创建一个停止在 5 的列表,停止值必须是 6。
numbers = list(range(6))
print(numbers)
输出:
[0, 1, 2, 3, 4, 5]
要反转这个列表,你必须指定 start
和 step
参数。
start
设置为 5,而 step
是 -1
,因为我们希望每次都将范围递减 1。stop
参数也应该设置为 -1
,因为我们想在 0
停止(因为 stop
的偏移量为 1)。
numbers = list(range(5, -1, -1))
print(numbers)
输出:
[5, 4, 3, 2, 1, 0]
在 Python 中通过 while
循环来反转一个列表
声明一个由 10 个随机整数组成的列表,我们要以反向顺序创建一个新的列表。
numbers = [66, 78, 2, 45, 97, 17, 34, 105, 44, 52]
在列表上使用 while 循环来反向输出。首先,得到列表的大小,并将其减去 1,指向列表的最后一个元素。我们也声明一个空列表来存储前一个列表的新逆向版本。
idx = len(numbers) - 1
newList = []
现在使用 while 循环来迭代并存储新列表中的每个元素,每次迭代都会递减 idx
,直到达到 0
。
while idx >= 0:
newList.append(numbers[idx])
idx = idx - 1
print(newList)
输出:
[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]
使用 Python 中的切片运算符反转一个列表
如果你不喜欢遍历列表,那么可以使用列表切片运算符将数组索引递减 1。
与 range()
类似,切片运算符接受三个参数:start
、stop
和 step
。
将前两个参数留空,这样它将覆盖整个数组,并将 step
值设置为 -1
,这样它将从数组的末端开始,每次递减 1。
newList = numbers[::-1]
print(newList)
输出:
[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]
在 Python 中使用 reversed()
反转列表
另一种在 Python 中反转一个列表的简单方法是使用内置函数 reversed()
。这个函数接受一个列表作为参数,并返回同一个列表的反转版本的迭代器。
使用上面同样的例子 numbers
,使用这个函数反转列表。不要忘了将这个函数放在 list()
函数中,以便将 reversed()
的返回值实际存储到一个列表中。
newList = list(reversed(numbers))
print(newList)
另外,你也可以使 for
循环来遍历反转的列表迭代器,并直接将其存储在 newList
中。
newList = [num for num in reversed(numbers)]
print(newList)
这两种解决方案的输出都是一样的。
[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]
总之,Python 提供了一个简单的方法,通过使用函数 reversed()
来反转一个列表。你也可以通过在 for
或 while
循环中手动反转一个列表。Python 也有一个简单的方法,如果你对使用切片运算符很熟悉的话,可以在一行中反转一个列表。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn