1、for表达式语法格式及用法

for表达式利用可迭代对象创建新的列表,for表达式也称为列表推导式,具体语法格式如下:

[表达式 for 循环计数器 in 可迭代对象]

例:

a = [ i + i for i in range(0,5) ]
print (a)
# 返回的是一个列表,打印 [0, 2, 4, 6, 8]  

上面的例子中,range相当于包含5个元素(0,1,2,3,4),对表达式 i + i 执行5次,并且把5次执行的值收集起来作为新的列表元素。

2、for表达式添加if条件

for表达式还可以在可迭代对象后面加if条件,for表达式只会迭代符合条件的元素,

例:

a = [ i + i for i in range(0,5) if i % 2 == 0]
print (a)
# 打印 [0, 4, 8]

上面的例子中,if i % 2 == 0筛选了range中的奇数,只对符合条件的3个元素(0,2,4)进行了迭代。

3、生成器推导式

for表达式把方括号[]改为圆括号(),将会生成一个生成器,生成器同样可以使用for循环迭代,

例:

a = ( i + i for i in range(5) )
print (a)
# 将不再生成列表,而是一个生成器。 打印 <generator object <genexpr> at 0x0000000002691B10>

# 使用for循环迭代生成器
for h in a:
    print (h,end = '\t')
# 打印 0       2       4       6       8      

4、嵌套for表达式  

for表达是也可以使用多个循环,

例:

a = [[i,j] for i in range(5) for j in range(6,8)]
print (a)
# 打印 [[0, 6], [0, 7], [1, 6], [1, 7], [2, 6], [2, 7], [3, 6], [3, 7], [4, 6], [4, 7]]

上面例子中,相当于如下的嵌套循环:

for i in range(5):
    for j in range(6,8):
        print ([i,j])

在嵌套的for表达式中,也可以添加if条件,

例:

a = [[i,j] for i in range(5) for j in range(5) if j == i]
print (a)
#打印 [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]  

上面的例子中,只有当 i 和 j 相等时,才会进行迭代。

参考:

https://www.cnblogs.com/mingmingming/p/11055282.html

最新文章

  1. marquee上下左右循环无缝滚动代码
  2. 将光标放到input内容的最后
  3. Struts2源码浅析-ConfigurationProvider
  4. 敲点JavaScript代码
  5. CSS图片垂直居中方法
  6. web提前做好测试
  7. nullptr和NULL
  8. Java [leetcode 29]Divide Two Integers
  9. n++与++n的区别
  10. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名
  11. Less的条件表达式
  12. Postgres中文分词
  13. 关于AndroidStudio 经常弹出TortoiseSVN 同步的解决办法
  14. 日常用的css基础和自己常用的js封装
  15. 5V与3.3V电平互转
  16. Android 系统中运行jar文件
  17. Resource View Window of Visual Studio
  18. 设计模式学习---UML常见关系的实现
  19. Jenkins 持续集成综合实战
  20. linux控制台批量杀进程

热门文章

  1. 如何更改已经pushed的commit的注释信息(How to change the pushed commit message)
  2. web布局相关
  3. Leetocde的两道丑数题目:264. 丑数 II➕313. 超级丑数
  4. Windows Server 2012 忘记登录密码怎么办?
  5. Day0 认识Java与变量类型
  6. 远程控制服务:配置sshd服务,密钥验证登陆
  7. ALSA driver --PCM 实例创建过程
  8. 不起眼,但是足以让你收获的JVM内存案例
  9. Django - 生成models的UML图
  10. rosserial学习记录