Python核心语法教程:列表推导式

2022-07-2821:24:13编程语言入门到精通Comments1,545 views字数 2063阅读模式

Python中存在一种特殊的表达式,名为推导式,它的作用是将一种数据结构作为输入,再经过过滤计算等处理,最后输出另一种数据结构。根据数据结构的不同会被分为列表推导式、集合推导式和字典推导式。我们先着重来介绍最常使用的列表推导式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

我们先看一下列表推导式的语法格式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
listname = [expression for variable in 对象(if condition)]

listname:新生成的列表名字文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

expression:表达式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

variable:变量名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

(if condition):用于从对象中选择符合要求的列表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

我们分别从规定范围的数值列表、规定条件的列表和符合条件元素组成的列表三个方面讲起。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

    1. 规定范围的数值列表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

我们先思考一下当我们需要生成10个数字并存放列表当中,我们先看一下普通方式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
2
3
4
listname = []
for in range(10):
   listname.append(i)
print(listname)

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
[0123456789]

而使用列表推导式只需要一行就可以:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
listname = [i for in range(10)]

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
[0123456789]

这种方式能简化我们在定义列表时的操作。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

    2. 根据规定条件生成列表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

假定我们已知一个列表为 listname = [1,3,5,6,7,9,10,23,26,28,64,98],我们要找到其把里面的数全部加5,普通方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
2
3
4
listname = [1,3,5,6,7,9,10,23,26,28,64,98]
for in range(len(listname)):
      listname[i] += 5
print(listname)

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
[68101112141528313369103]

而使用列表推导式同样很简洁:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
2
listname = [1,3,5,6,7,9,10,23,26,28,64,98]
listname = [ i + 5 for in listname]

输出:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
[68101112141528313369103]

3. 符合条件的元素组成的列表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

这种类型的列表推导式要比前两种复杂点,但是能简化更多的代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

我们先举个列子来看一下代码格式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

已知一个列表为listname = [8,33,53,64,73,95,101,123,126,164,198],然后我们要找到列表中小于大于100的数字,然后乘上0.8,最后返回到列表中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

如果我们使用普通方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
2
3
4
5
6
7
listname = [10,20,30,40,60,120,130,140,160,180,200]
newlist = []#创建新列表来存储
for in range(len(listname)):#索引值遍历
    if listname[i] >100:#找到大于100的数
        listname[i] *= 0.8#乘上0.8
        newlist.append(listname[i])#添加到新列表中
print(newlist)

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
[96.0104.0112.0128.0144.0160.0]

使用列表推导式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
2
3
listname = [10,20,30,40,60,120,130,140,160,180,200]
newlist = [i*0.8 for in listname if i > 100]
print(newlist)

输出结果:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
[96.0104.0112.0128.0144.0160.0]

我们来根据这个例子的语法结构来分析一下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

Python核心语法教程:列表推导式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

在使用复杂的列表推导式的时候我们可以采用这种方式,可以理解为我们先把符合条件的元素(条件语句)从对象中挑选出来,然后再经过输出表达式的处理,最后存放到了列表当中,形成新的列表。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

4. 例题文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

下面提供几道例题可以尝试着做一下。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1.列表[1,2,13,22,25],请使用使用列表推导式提取出大于10的数,并把每个数平方,最终输出。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

运行结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
[169484625]

代码如下,可以先尝试做完参考答案。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
2
3
list = [1,2,13,22,25]
newlist = [i * for in list if i >10]
print(newlist)

2.列表推导式求列表所有奇数并构造新列表,list =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
2
3
list = [12345678910]
newlist = [i for in list if i%2 ==1]
print(newlist)

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html

1
[13579]
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26181.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/26181.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定