主要内容:

  • 小目标:掌握列表解析
  • 主要内容:列表解析语法,列表解析使用

如果看完这篇文章,你还是弄不明白列表解析; 你来找我,我保证不打你,我给你发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:计算总分,并出以数量,计算均值

结果:

以上就是列表解析相关常用操作,实际工作中,列表解析可能会更加灵活复杂,需要通过练习加强理解。