购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 Python编程技巧

编程是有技巧的,能写出程序的人很多,但是能又快又好是需要技巧的。本节介绍一些常用的Python语言编程技巧,包括自动补全程序、变量值的互换、列表解析式、元素序列解包。

2.4.1 自动补全程序

JupyterLab与Spyder、PyCharm等交互编程开发环境一样,具有Tab补全功能,在Shell中输入表达式,按Tab键,JupyterLab就会搜索已输入的变量名、对象名、函数名等。

例如,输入企业2020年的总销售额996.18万元,并赋值给名为order_sales的变量。

     order_sales = 996.18

再输入企业2020年的总利润额98.39万元,并赋值给名为order_profit的变量。

     order_profit = 98.39

接着在JupyterLab中输入“order”,然后按Tab键,这时就会弹出与order命名相关的变量,如图2-7所示。

图2-7 自动补全示例1

可以看出,JupyterLab会显示出之前已经定义的变量及函数等,编程人员可根据具体需要进行选择。当然,也可以补全任何对象的方法和属性,例如企业2020年不同区域的销售额为order_volume,在JupyterLab中输入“order_volume.”(注意别忘了输入“.”),然后按Tab键,就会弹出相关的函数,如图2-8所示。

     order_volume = [289, 258, 191, 153]

图2-8 自动补全示例2

2.4.2 变量值的互换

如果要互换变量a和b中的值,通用的方法是:首先定义一个临时变量,先将变量a的值赋给临时变量temp,再将变量b的值赋给变量a,最后将临时变量temp中的值赋给变量b,最终完成两个变量值的互换。

示例代码和输出如下:

这段代码在Python中其实可以改写成下面的简洁形式,示例代码如下:

2.4.3 列表解析式

如果要把2020年企业各个季度的订单列表中的数值都加上60,通常可以用for遍历整个列表来实现这个功能,示例代码和输出如下:

上述程序的功能也可以使用列表解析式的方法来实现,示例代码和输出如下:

其中方括号中的后半部分“for x in order_volume”是告诉Python这里需要枚举变量中的所有元素,其中每个元素的名为x,方括号中的前半部分“x + 60”则是将其中的每个数值x分别加上60。

列表解析式还有另一个应用,就是筛选列表中的元素,若要筛选变量order_volume中大于200的数据,示例代码和输出如下:

我们可以这样理解上述第二行代码的含义:新的列表由x构成,而x来源于之前的order_volume,并且需要满足if语句中的条件。

2.4.4 元素序列解包

序列解包是Python 3之后才有的语法,可以用这种语法将元素序列解包到另一组变量中。例如,province中存储了华东地区及其具体省市的名称,如果我们想单独提取出地区名称和省市名称,并把它们分别存储到不同的变量中,可以调用字符串对象的split()方法把这个字符串按冒号分割成多个字符串,示例代码和输出如下:

上述代码直接将split()方法返回的列表中的元素赋值给变量region和变量province_south。这种方法并不限于列表和元组,而是适用于任意的序列,甚至包括字符串序列。只要赋值运算符左边的变量数目与序列中的元素数目相等即可。

但是在工作中,经常会遇到变量数目与序列中的元素数目不相等的情况,这个时候就需要使用序列解包。可以利用“*”表达式获取单个变量中的多个元素,只要它的解释没有歧义即可,“*”获取的值默认为列表,示例代码和输出如下:

上述代码获取的是赋值号右侧的剩余部分,当然也可以获取中间的部分,示例代码和输出如下: PJLlQ0+5I7/pWA2H0T+VuEt07t5Tx9eQrYbx9ffuZx7/fM8sJ2NrNlVU4VfjM5ox

点击中间区域
呼出菜单
上一章
目录
下一章
×