当前位置: 首页 > news >正文

网站开发发帖语言营销策划公司经营范围

网站开发发帖语言,营销策划公司经营范围,做淘宝相关网站,做视频网站 服务器配置背景:今天放假在家,《python学习手册》不在身边,所以今天学习《Effective Python: 编写高质量Python代码的90个有效方法》第28条《控制推导逻辑的子表达式不要超过两个》,这本书已经是第二版了,第一版是《编写高质量py…

背景:今天放假在家,《python学习手册》不在身边,所以今天学习《Effective Python: 编写高质量Python代码的90个有效方法》第28条《控制推导逻辑的子表达式不要超过两个》,这本书已经是第二版了,第一版是《编写高质量python代码的59个有效方法》,这本书当时看第一版时还是很有收获的,现在出第二版了,就想再看一遍。

亿如要把一个矩阵(二维列表)转成普通的一维列表,那么可以在推导时,使用两条 for子表达式。

>>> matrix = [[1,2,3],[4,5,6],[7,8,9]]
>>> flat  = [ x for row in matrix for x in row]
>>> print(flat)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

这样写简单易懂,这也正是多层循环在列表推导之中的合理用法。这种用法还可以稍做扩展,比如要把上面的矩阵换成每个数字的平方的矩阵。

>>> matrix = [[1,2,3],[4,5,6],[7,8,9]]
>>> squared = [[ x**2 for x in row] for row in matrix]
>>> squared
[[1, 4, 9], [16, 25, 36], [49, 64, 81]]

这个复杂了一些,但总体上还可以理解,但是如果再复杂一些的话,就会变得难以理解。

>>> my_lists = [[[1,2,3],[4,5,6]] , [[7,8,9],[10,11,12]]]
>>> flat = [x for sublist1 in my_lists for sublist2 in sublist1 for x in sublist2]
>>> flat
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

这种写法并不会比会给的for循环节省多少代码。并且用两层for循环还更容易理解。

>>> flat = []
>>> for sublist1 in my_lists:for sublist2 in sublist1:flat.extend(sublist2)>>> flat
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

另外,推导的时候,可以使用多个if 条件。如果这些if 条件在同一层循环内,那么它们之间默认是 and 关系,也就是必须同时成立。 例如,如果要用原列表中大于4且是偶数的值来构建新列表,那么既可以连用两个if,也可以只用一个if, 下面两种写法效果相同。

>>> a = [1,2,3,4,5,6,7,8,9,10]
>>> b = [x for x in a if x > 4 if x % 2 ==0]
>>> c = [x for x in a if x>4 and x%2 == 0]
>>> b
[6, 8, 10]
>>> c
[6, 8, 10]

在推导时,每一层的for子表达式都可以带有if条件。例如,要根据原矩阵构建新的矩阵,把其中各元素这之和大于等于10的那些行选出来,而且只保留其中能够被3 整除的那些元素。这个逻辑也可以用列表推导来写,但是理解起来就比较困难。


>>> matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> filtered = [[ x for x in row if x %3 == 0] for row in matrix if sum(row)>=10]
>>> filtered
[[6], [9]]
>>> 

虽然这些例子是专门造出来的,但现实中确实有类似的需求,这个时候,笔者不建议用上面的写法来推导新的 List,dict,或 set, 因为这样写出的来的代码会让初次阅读这段程序的人很难看懂。对于dict来说,尤其严重。

最后,作者的总结:

在用推导表达式时,最多只应该写两个子表达式(例如两个if条件,两个for循环,或者一个if条件与一个for循环)。要是逻辑比这还复杂,那就应该采用普通的if与for语句来实现,并且可以考虑编写辅助函数。

http://www.mmbaike.com/news/49145.html

相关文章:

  • 什么是一学一做视频网站好seo诊断分析
  • 去哪里找做网站网站安全检测工具
  • 台州做网站公司谈谈你对seo概念的理解
  • 建手机网站价格seo与sem的区别和联系
  • 优质网站建设在哪里网店怎么推广和宣传
  • 住房和建设委员会网站海曙seo关键词优化方案
  • 和幼女做视频网站windows优化大师收费
  • 浙江省城乡和建设厅网站怎么自己创建一个网页
  • 徐州网站建设公司人工智能培训机构排名
  • .net网站模版seo怎么做?
  • 北京学校网站建设公司品牌推广策略有哪些
  • 做网站开发赚钱吗手游代理加盟哪个平台最强大
  • 国外做饰品批发网站搜狗收录提交入口
  • 建个企业网站系统优化软件哪个最好的
  • 设置网站的关键词线上营销培训
  • 最新网站建设常见问题网站查询域名ip
  • 织梦栏目页不显示网站描述网站推广找哪家公司好
  • 什么样的人适合做策划网络seo是什么工作
  • 宜兴淘宝网站建设西安计算机培训机构哪个最好
  • wordpress迁移换域名西安seo培训
  • 怎么自己做单页网站手机版百度入口
  • 西安大型网站制作北京优化seo
  • 做市场调研的网站2022当下社会热点话题
  • 怎么做国外赌球网站代理惠州市seo广告优化营销工具
  • 怎么在360网站做词条关键词优化seo排名
  • 原创文章对网站的好处百度最新版app下载安装
  • 购物网站建设目标seo关键词排名优化价格
  • 成都哪家做网站好it培训学校it培训机构
  • 国内产品网站1688国内seo公司
  • 怎么自己做画册网站游戏推广引流