Categories
程式開發

Python3.6.1官方文档练习——初入江湖(二)


来的快的,

去的也快。

于是沙漏滴完,

还剩下些什么呢?

——当年的提问,现在回答:

剩下了当年的痕迹,当年的文字,臭不要脸的说还有随着时间增长的智慧。

上一期练习到了 Python 的注释,计算器,字符串,while 循环和 Fibonacci series 的函数体。如想回顾,请戳:Python3.6.1官方文档练习——初入江湖” 发现 ( InfoQ 对微信公众号链接还是很友好的)这一期,继续官方文档的练习之路。

细心的你,有没有发现上期 Python 推送中的编译环境有两种?

一种是黑色背景的,一种是白色。

Python3.6.1官方文档练习——初入江湖(二) 1

前者是直接打开的 Python 的解释器(Interpreter),可以随时运行结果,但是缩进需要手打,以至于刚开始没发现这个问题时运行一直出错;

Python3.6.1官方文档练习——初入江湖(二) 2

后者则是IDE编译环境Spyder,可以自动缩进,也可以使用 Ctrl +V 。

1

关于数据,补充:

浮点数是有精度损失的。3.3 用二进制是不能准确表示的。

如,计算1.1+1.1时,程序结果正确:

Python3.6.1官方文档练习——初入江湖(二) 3

而又多了一个1.1时,则出现错误:

Python3.6.1官方文档练习——初入江湖(二) 4

2

函数的关键字参数调用。

当最后一个形参以 “ **name ”形式出现时,它接收一个字典,该字典包含了所有未出现在形式参数列表中的关键字参数。*name接收一个包含所有没有出现在形式参数列表中的位置参数元组。(*name必须出现在**name之前。)

在函数调用中,关键字的参数必须跟随在位置参数的后面。传递的所有关键字参数必须与函数接受的某个参数相匹配(例如actor不是parrot函数的有效参数),它们的顺序并不重要。

举个例子(下面那张图)来说,kind 就是位置参数,keywords这一单词通常代表关键字参数,在函数调用中的形式是:[ ]=[ value ]。

*arguments代表一种形式的关键字,**keywords代表另一种形式的关键字,它们俩就是前面提到的形参。 

Python3.6.1官方文档练习——初入江湖(二) 5

如果你看了图片也许会好奇 runny 的意思,单独一个单词是“流鼻涕、流(非固体)”,而在 “It is very runny. ”中则是“流行的”,整句话翻译过来就是“这太流行了。”

3

下图的例子就是用作函数的返回值。

Python3.6.1官方文档练习——初入江湖(二) 6

Python3.6.1官方文档练习——初入江湖(二) 7

sort 函数是列表的自带排序功能。key是建立排序的参数。默认参数:

list.sort( key = None, reverse = False)

key 就像是你选中了 Excel 中的很多列,然后制定要按照其中某一列来排序。被选中作为排序索引的那一列就是 key。

reverse 默认是升序,如果要改为降序,就把参数改为:True。

像官方文档里给的用法是 sort + lambda,就可以很方便的制定按列表元素里的第几项元素进行排序。

c 语言的列表的排序实现是需要遍历去写代码的,冒泡排序啊、快速排序啊等排序算法,为我们贡献了不少算法题目。Python 在这里就显得非常的简单方便。

4 列表操作

以下面这个列表为例:

Python3.6.1官方文档练习——初入江湖(二) 8

1)list.append(x)

添加一个元素到列表的末尾;相当于a[len(a):] = [x]。

Python3.6.1官方文档练习——初入江湖(二) 9

2)

list.extend(L)

将指定列表中的所有元素附加到另一个列表的末尾;相当于a[len(a):] = L。

Python3.6.1官方文档练习——初入江湖(二) 10

3)

list.insert(i, x)

在给定位置插入一个元素。

第一个参数是插入的元素的索引,a.insert(0, x) 在列表的最前面插入。

Python3.6.1官方文档练习——初入江湖(二) 11

4)

list.remove(x)

删除列表中第一个值为 x 的元素。如果没有这样的元素将会报错。

Python3.6.1官方文档练习——初入江湖(二) 12

5)

list.pop(i)

删除列表中指定位置的元素并返回它。如果未指定索引,a.pop()将删除并返回列表中的最后一个元素。

Python3.6.1官方文档练习——初入江湖(二) 13

6)

list.index(x)

返回列表中第一个值为 x 的元素的索引。如果没有这样的元素将会报错。

Python3.6.1官方文档练习——初入江湖(二) 14

7)

list.reverse()

原地反转列表中的元素。

Python3.6.1官方文档练习——初入江湖(二) 15

5

使用append()将元素添加到栈顶;

使用不带索引的pop()从栈顶取出元素。

例如:

Python3.6.1官方文档练习——初入江湖(二) 16

6 队列的操作:

Python3.6.1官方文档练习——初入江湖(二) 17

总结:

如果要直接啃官方文档来学习编程语言,我建议要有数据结构的先导基础以及其他编程语言,尤其是 C 。这样看官方文档才不会被绕进去,对于每个部分所属的知识结构心里也能有个大致的框架。

比如,今天这篇主要偏重 列表,后面还有字典,那么这就属于 python 的经典的数据结构。

而在每种数据结构下面,又涉及到“增删改查”4个基本功能的实现。

增一般用:append、expend,

删:pop、del,

改:直接覆盖、赋值修改,

查:往往是需要遍历一遍才能找到想要的元素。

具体情况再具体分析。包括到后面的 pandas 里的 DataFrame 也是如此。

对于数据结构和算法知识感兴趣的朋友,我正在极客时间学习《数据结构与算法之美》,欢迎加入课程学习。最赞的是学生身份验证后,购买课程半价。

Python3.6.1官方文档练习——初入江湖(二) 18

偶尔来烧脑练习一波也是不错的,与君共勉。