废话篇
我们老祖宗早就说出了一个颠簸不破的道理:凡事预则立,不预则废。
所以,学习Python前我做的准备工作就是:
准备一台安装了Anaconda 3开源发行版本的电脑,Anaconda 3集合3.6版本的Python与可视化编程工具Spyder。
提问篇
好了,废话了那么多,现在进入正题。鉴于本章分享的是学习Python列表元素排序的主知识点,那就要在学习前提出问题,带着问题进入学习状态。
1、是否有专门的排序方法?
2、是否也是存在三种排序方式:顺序、倒序、乱序?
3、执行排序操作后,是否会新建列表对象?
4、纯属的数字列表,是否存在求最大、最小、和这样类似运算?
解答篇
带着上面的问题,我开始进入学习状态。
一、了解到Python提供排序方法,并且可以实现顺序、倒序、乱序三中排序方式。
1、sort()方法
列表对象调用sort()方法可以实现列表元素的顺序或倒序排序。
顺序:列表对象.sort()倒序:列表对象.sort(reverse = True)自己动手敲出代码:
a = [7,9,2,89,54,35,76,24,19,99,12]a.sort() #顺序排序print(a)a.sort(reverse = True) #倒序排序print(a)
2、random
列表打乱顺序需要引入一个模块random,在是用该模块中的shuffle()方法来实现。
直接敲出代码吧:
import randomrandom.shuffle(b)print(b)
代码运行效果见图:
排序案例
二、需要验证上面两种方法是否会在内存中新建一个列表对象。如果没有的话,那Python是否提供了其他方法呢?
还是采用上面案例中已经创建的列表对象:
1、先看看操作排序前的列表地址
id(a)id(b)
2、进行排序操作并再次查看列表地址
判断是否新建列表对象案例
3、sorted():新建列表对象的排序
直接上案例演示图,说服力更强。
sorted()案例
结论:
sorted()排序后,会在内存中创建新的列表对象。应用:游戏程序中用来洗牌的时候可以用到sorted()方法。
三、Python也提供求最大、最小、和的方法,分别himax()、min()、sum()
上案例效果图:
衍生篇
一、Python提供了一个迭代器的概念,这是在提问篇没想到的问题,所以我们放到这里来学习。
二、对于逆序排序,我们是否可以利用前面学过的知识呢?譬如列表的切片。
上案例效果图:
结论:
迭代器产生类似指针的东西;迭代器产生的内容只能被读取一次,并可写入新的列表对象内存中;可以采用列表切片的方式实现列表逆序排序。感言:
编程语言的学习就是一个多练习的过程。在不停地敲代码过程中理解Python精义,在理解的过程中又用敲代码的方式来解答与验证自己的疑问点,逐渐巩固自己对Python这门语言的理解,直至掌握,无捷径可走。