主要内容:
- 小目标:掌握列表解析
- 主要内容:列表解析语法,列表解析使用
如果看完这篇文章,你还是弄不明白列表解析; 你来找我,我保证不打你,我给你发100的大红包。
1. 列表解析
列表解析:创建新列表的一种方式,可以实现快速迭代。 基本语法:
- [expression for iter_val in iterable]
- [expression for iter_val in iterable if cond_expr]
2. 列表解析应用
需求:生成一个列表:[11,22,33...99]
- 使用for循环:
listv = []
for i in range(1,10):
listv.append(i*i)
print(listv)
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
- 使用列表解析:
listv = [i*i for i in range(1,10)]
print(listv)
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
- 列表解析执行过程:
1:执行for循环,将i赋值 2:执行表达式i,将表达式结果添加到列表中 3:for循环结束,表达式执行结束,生成新的列表
3. 列表解析添加条件判断
需求:成绩列表:
plist = [90,88,77,56,64,99]
过滤出及格成绩
plist = [90,88,77,56,64,99]
listpass = [v for v in plist if v >=60]
print(listpass)
结果:
[90, 88, 77, 64, 99]
- 列表解析执行过程:
- [expression for iter_val in iterable if cond_expr]
1:执行for循环,将iter_val赋值; 2:执行if语句; 3:如果if表达式成立,执行expression; 4:如果if表达式不成立,继续执行第1步;
4. 列表解析多层循环
需求:能不能一条语句生成乘法口诀
'1*1=1',
'1*2=2',
'2*2=4',
...
'9*9=81'
上操作:
[f'{j}*{i}={i*j}' for i in range(1,10) for j in range(1,i+1)]
来咱么仔细分析执行过程:
1:先执行第一个循环,i值取1 2:执行第二个循环,j值取1 3:执行表达式f'{j}{i}={ij}',结果:'1*1=1' 4>继续执行第2个循环,执行结束,重新执行第一个循环, 5>依次类推,最终结果如上;
- 注意:一般不建议写多重循环,不利于维护与阅读
5. 列表解析小练习
5.1 统计句子中,所有单词的长度和
需求:s = 'hello world',长度为10
s = 'hello world'
#1:使用s.split()对字符串切分,
#2:for循环遍历列表,计算每个单词长度
#3:使用sum统计长度
sum([len(wd) for wd in s.split()])
结果:10
5.2 统计学生成绩平均分
数据:
data = {'数学':'90','语文':'80', '体育':'89'}
实现:
data = {'数学':'90','语文':'80', '体育':'70'}
sum([int(score) for score in data.values()])/len(data)
结果:80
执行过程:
1:获取data的values, 2:遍历values,并将其转成数字 3:计算总分,并出以数量,计算均值
结果:
以上就是列表解析相关常用操作,实际工作中,列表解析可能会更加灵活复杂,需要通过练习加强理解。