我们就成功创建了一个 列表推导式。我们还可以运用字符串的格式化实现更多样化的输出:
print([f"Python{i} 期" for i in range(1, 51)])
前面两种是列表推导式的普通循环模式,它的基本结构为:
[加工后的变量 for循环]
除了普通循环模式,我们还可以通过给循环增加筛选条件,实现筛选模式的列表推导式:
print([i for i in range(1, 51) if i > 25])
筛选模式的列表推导式的基本结构为:
[加工后的变量 for循环 加工条件]
列表推导式还支持嵌套。
对于这样一个嵌套的循环:
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333
'''
lst = []
for i in range(2):
for j in range(2):
lst.append(i + j)
print(lst)
改成列表推导式结构就成了这样:
print([i + j for i in range(2) for j in range(2)])
嵌套的列表推导式同样可以使用条件进行筛选:
print([(i, j) for i in range(5) if i > 3 for j in range(6) if j < 3])
虽然列表推导式能节省很多代码,但是最多建议嵌套三层。
生成器可以让代码更加简化。比如,我们想求字符串 “alex,meet” 中每个字母 e 的索引。如果用 for 循环来写是可以实现的,但是需要多行代码:
s = 'alex,meet'
count = 0
lst = []
for i in s:
if i == 'e':
lst.append(count)
count += 1
print(lst)
输出结果为:[2, 6, 7]
而如果使用列表生成器的话,只需要一行代码即可实现:
print([i for i in range(len(s)) if s[i] == 'e'])
字典推导式和集合推导式
除了列表之外,其他可变数据类型,比如字典字典和集合也可以通过推导式的方法来创建:
'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333
'''
字典推导式
print({i:i+1 for i in range(3)}) # 字典推导式普通循环模式
print({f"Python{i}":i+1 for i in range(3)}) # {变量:变量 for循环}
print({i:i+1 for i in range(3) if i > 1}) # 字典推导式筛选模式
{加工后的变量:加工的后的变量 for循环 加工条件}
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习