如何在 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