Python Tips 5

对list进行滑动取值

在序列分析中,设定一个窗口大小,滑动从list中的取值是常有操作,我们可以利用zip函数返回匹配的最短长度的特性,方便的从list中进行滑动取值

对多个list做笛卡尔积

可以使用嵌套的列推导方式对两个list做笛卡尔积,例如

但如果有更多list一起做笛卡尔积的话,列推导方式的代码可读性会比较差,我们可以使用itertools模块中的product,可以方便的完成这个笛卡尔积

list的copy和deepcopy

list直接使用=来“复制”时,当修改其中一个list中的元素,“另一个”list也会受到影响

这是由于变量l1和l2指向的是同一个list对象,因此,实际上对list的修改的是同一个list

我们可以调用list的copy方法,这样会对list进行一个复制

但是如果是嵌套list,那么只调用copy方法是不够的

这是由于copy方法只复制了第一层数据,如果是嵌套的话,那么里层指向的还是同一个list,这里我们需要copy模块中的deepcopy方法

deepcopy会完全将list复制下来,因此数据比较大的时候,非常占用内存,需要小心使用

dict与lambda表达式相结合

有时候我们需要对不同的关键字做出不同的操作,如关键字为increase时,我们对输入数字加1;关键字为decrease,我们对输入数字减1,我们可以使用if-else结构来实现

但当有太多可判断的条件时,大量if-else结构并不利于代码的维护,并且无法进行动态的修改。这时我们可以使用dict与lambda表达式相结合的方式来实现这样的操作,这样可以动态的对dict做出改变

删除swap

新增op,这里lambda表达式使用的是字符串形式

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

同媒体快讯

扫码关注云+社区

领取腾讯云代金券