A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦缠绕的时候 黑马粉丝团   /  2019-6-20 14:45  /  1374 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、for表达式语法格式及用法
for表达式利用可迭代对象创建新的列表,for表达式也称为列表推导式,具体语法格式如下:
[size=1em]
1

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



例:
[size=1em]
1

2

3

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表达式只会迭代符合条件的元素,
例:
[size=1em]
1

2

3

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循环迭代,
[size=1em]
1

2

3

4

5

6

7

8

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表达是也可以使用多个循环,
例:
[size=1em]
1

2

3

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]]



上面例子中,相当于如下的嵌套循环:
[size=1em]
1

2

3

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




在嵌套的for表达式中,也可以添加if条件,
例:
[size=1em]
1

2

3

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 相等时,才会进行迭代。
——————
有任何问题可以直接在下方留言哦~

2 个回复

正序浏览
感谢分享~~
回复 使用道具 举报
任何问题可以留言交流哦
或者直接添加微信DKA-2018
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马