列表推导是一种从其他列表创建列表的方式,类似于数学中的集合推导,列表推导的工作原理非常简单,类似于for循环。(以下代码均在IDLE实现)

最简单的列表推导:

>>>[x*x for x in range(9,0,-1)]
[81, 64, 49, 36, 25, 16, 9, 4, 1]

稍微复杂一点,加上判断条件:

>>>[x*x for x in range(9,0,-1) if x%2==0]
[64, 36, 16, 4]

继续复杂,多个for循环:

>>>[(x,y)for x in range(1,10) for y in range(1,10) if x%3==0 and y%3==0]
[(3, 3), (3, 6), (3, 9), (6, 3), (6, 6), (6, 9), (9, 3), (9, 6), (9, 9)]

这个时候就有疑问了,上边都用的是列表,那么元组可以吗?

答案显然是——不行!

什么?怎么不行呐?

实际上使用圆括号代替方括号并不能实现元组的推导,而是将创建生成器。

生成器又是个什么东西?

好的,这里我们先不讲述,后面继续学到之后再回过来解释。

虽然无法实现元组的推导,但使用花括号代替方括号却可以实现字典的推导。

>>>squares={i:"{} suared is {}".format(i,i**2) for i in range(5)}
>>> squares[0]
'0 suared is 0'
>>> squares[1]
'1 suared is 1'
>>> squares[2]
'2 suared is 4'
>>> squares[3]
'3 suared is 9'
>>> squares[4]
'4 suared is 16'

在列表推导中,for前面只有一个表达式,但在字典的推导中,for前面有两个用冒号分隔的表达式,这两个的表达式分别为键以及对应的值。

未完待续,持续更新中......

最新文章

  1. esnext:最后一个参数后面也允许加逗号了
  2. poj2488骑士马走
  3. HDU 4857 逃生 (优先队列+反向拓扑)
  4. php获取网站根目录
  5. 错误编码 = 10022 错误消息 = SDK 组件 Qupaisdk 启动出错,错误消息为 [Qupaisdk], the android stack error message is Fail to start the plugin, which is caused by No implem
  6. 当Scheduler拿不到url的 时候,不能立即退出
  7. html5之一些通用属性
  8. 利用分支限界法求解单源最短路(Dijkstra)问题
  9. OkHttp3源码详解(五) okhttp连接池复用机制
  10. EF大数据批量处理 EntityFrameWork下增加扩展方法
  11. VS2012使用验证控件出现[ASP.NET]WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。請加入 ScriptResourceMapping 命名的 jquery (區分大小寫)。的解决办法。
  12. Linux内核第三节 20135332武西垚
  13. git 冲突解决办法
  14. 英国诗人乔叟Dethe is my Finaunce金融
  15. Using LACP with a vSphere Distributed Switch 5.1
  16. web前端要学哪些?
  17. UE4的csv文件导入、URL地址的读取及动态材质的设置
  18. disable_functions php-fpm root
  19. 按着shift键对dbgrid进行多条记录选择的问题(50分)
  20. Flask—07-建立自己的博客(01)

热门文章

  1. UAC就不能一次添加、永久信任吗?
  2. 读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)
  3. c++实现游戏开发中常用的对象池(含源码)
  4. 条款16:成对使用new和delete时要使用相同的形式
  5. Laravel --- 自动生成数据
  6. tensorflow学习笔记-bili莫烦
  7. 精通并发与 Netty (一)如何使用
  8. HBase 学习之路(三)—— HBase基本环境搭建
  9. Spring ——表达式语言 Spring Expression Language (转载)
  10. 在java项目启动时就执行某操作