One - One Code All

Blog Content

python让列表逆序倒序排列的 3 种方式

Python   2014-02-27 12:37:48

第一种方式 list.reverse()


Python 的 list.reverse() 方法,会直接在原来的列表里面将元素进行逆序排列,不需要创建新的副本用于存储结果。

调用 list.reverse() 的返回值是 None ,它逆序的结果直接体现在原来的列表里面。


这种方式,有好处也有坏处。好处是节省内存使用,因为我们不需要重新申请空间来保存最后的结果。坏处是,我们修改了原来的数据,如果我们后面要使用原数据的话不方便。


第二种方式 使用切片 [::-1]


Python 的列表有一个特性叫做切片,你可以将它看作是方括号( [ ] )使用的扩展。

mylist[start:end:step]

表示取 mylist 的第 start 个(列表索引从 0 开始)到第 end 个元素(不包括第 end 个),其中每隔 step 个(默认 1 )取一个。

当然,start 、end 和 step 都是可选的。

mylist[:] 会返回 mylist 的副本

而当 start 、end 和 step 为负时,表示从反方向遍历

所以 mylist[::-1] 就能达到逆序的目的



相比于第一种方式,这种方式会另外创建副本来保存列表的所有元素,所以需要更多的内存空间。并且,由于使用了切片的特性,导致在可读性上也不如之前的方式。但是这种方式没有改变原来的列表,在某些情况下算是一种优势。


第三种方式 使用 reversed() 方法


for  i  in reversed(mylist):

    print(i)


reversed 方法会将列表逆序的结果存储到迭代器里面,这种方式不会改变原来的列表,也不会创建原来列表的完整副本,只会多出迭代器对象所占的空间,相对来说也比较高效。



上一篇:Airbnb开源项目airflow
下一篇:UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 11126: illegal multibyte sequence

The minute you think of giving up, think of the reason why you held on so long.