反转Python列表的4种方法
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!
列表是Python中最基本且常用的数据结构之一,它是一个可变且有序的对象集合,也可以存储重复值。有时候我们需要将列表元素进行逆序排列,就是所有的元素位置反转。
现分享一下Python列表反转的4种方法:
负步长切片
在交互式环境下输入如下命令:
zen_str = '人生苦短,我学,Python'
zen_lst = [n.strip() for n in zen_str.split(',')]
zen_lst_reversed = zen_lst[::-1]
print(zen_lst_reversed)
输出:
<注解>:列表切片语法:列表名[x:y:z] x:切片开始位置, 默认为0 y:切片截止(但不包含)位置,默认为列表长度 z:切片的步长,默认为1;-1则表示从最后元素开始切片。
list.reverse()
在交互环境中输入如下命令:
zen_str = '人生苦短,我学,Python'
zen_lst = [n.strip() for n in zen_str.split(',')]
zen_lst.reverse()
print(zen_str)
输出:
列表对象的reverse()方法可以使之反转,该方法没有返回值,将列表中的所有元素进行原地逆序。
reversed()函数
在交互环境中输入如下命令:
zen_str = '人生苦短,我学,Python'
zen_lst = [n.strip() for n in zen_str.split(',')]
zen_lst_reversed = reversed(zen_lst)
print(list(zen_lst_reversed))
输出:
与上一个reverse()方法不同,Python内置的reversed()函数不对原列表做任何修改,而是返回一个逆序排列后的迭代对象。
因为它返回的是一个迭代器,所以我们需要使用list(list_reversed)转换一下。
列表生成式
在交互环境中输入如下命令:
zen_str = '人生苦短,我学,Python'
zen_lst = [n.strip() for n in zen_str.split(',')]
zen_lst_reversed = [zen_lst[len(zen_lst)-i-1] for i in range(len(zen_lst))]
print(zen_lst_reversed)
输出:
使用for循环和列表索引,返回结果将是一个新的反转列表。
好了,今天分享的这4个方法,都可以用来使Python列表反转。而且也不必拘泥于此,比如一个列表元素是按照顺序或者逆序排列的,我们也可以使用sorted()函数来使之“反转”。