Python Tips

交换变量值

Python中实现变量值的互换不需要设置临时变量

其原理是可以将任何序列,比如list、tuple,通过赋值来分解为单独的变量,例如上面等号右边的y, x就组成了一个tuple

我们也可以将x和y显式的组成一个list,进行交换

再赋值给y和x,这样可以完成变量值的交换

这种将序列进行分解的操作,有时候会有很多用处,例如将list中的元素赋值给x、y和z

压包与解包

压包和解包是Python中一个常用的功能

序列解包

在交换变量值小节中已经看到了序列解包的功能,除了将元素赋值给变量外,我们还可以*来分解任意数量的元素

用户信息中的姓名、用户编号和电话号码被解包出来了,其中号码可能有多个,通过*我们可以将任意多个,包括空的情况赋值给phones

通过这个功能,可以很方便的去掉最低和最高分后,来求平均值

函数中压包与解包参数

经常可以看到很多参数是以*args, **kwargs作为参数的函数,这样做就是利用了Python的压包与解包功能

*args的功能就是将传入的参数,例如1, 2, 3打包成一个tuple作为参数传入函数中,注意,这里的参数是不加关键字的,参数中需要加入关键字的,则需要加入**kwargs参数

**kwargs的作用是将关键字参数转为一个dict传入到函数中

这里,args和kwargs是可以换成其他名字,不过一般Python中约定俗成使用这两个变量名

如果将list直接作为参数传入,那么整个list会作为参数传入

可以在list参数前使用*进行解包,这时list中的每个元素会被解包,作为位置参数传入函数中

同样使用在dict参数前使用**,这时dict中的每个键值对会被解包,会作为关键字参数传入函数中

也可以传入多个list和dict,函数压包参数时会进行合并

下面举两个在format和zip函数中使用的例子

最大或者最小的N个元素

Python中使用max和min可以找到某个集合中最大或者最小的数

但是想找出最大或者最小的N个元素,可以使用heapq模块中的nlargest和nsmallest函数

如果经常对同一序列需要寻找最大或者最小的N个元素,考虑先将序列排序,这样做的话,效率会更高

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181019G1FX3P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券