Python基础09-列表推导式和生成器表达式_列表推导式或生成器表达式

113 阅读4分钟

2.3 案例

三、 列表推导式和生成器表达式的区别


一、列表推导式

1.1 列表推导式的语法

**列表推导式语法形式为:
[expression for expr1 in sequence1 if condition1
 for expr2 in sequence2 if condition2
 for expr3 in sequence3 if condition3
 ...
 for exprN in sequenceN if conditionN]**

列表推导式在逻辑上等价于一个循环语句,只是在形式上更加简洁!

1.2 比较列表推导式和循环

# 使用列表推导式
list1 = [x*x for x in range(10)]
print(list1)         # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 使用循环
list2 = []
for i in range(10):
    list2.append(i*i)
print(list2)         # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

1.3 案例

使用列表推导式查找列表中最大元素的所有位置

from random import randint
x = [randint(1,10) for i in range(20)]
m = max(x)
print([index for index, value in enumerate(x) if value  == m])

二、生成器表达式

2.1 概念

        生成器表达式(generator expression)的用法与列表推导式非常相似,在形式上生成器表达式使用圆括号(parentheses)作为定界符,而不是列表推导式所使用的方括号(square brackets)。

2.2 生成器表达式的语法

生成器表达式的基本格式:

(expression for item in Sequence )

(expression for item in Sequence if conditional )

2.3 案例

# 使用生成器对象__next__()方法或内置函数next()进行遍历
a = ((i+2)**2 for i in range(10))  #创建生成器对象
print(a)        # <generator object <genexpr> at 0x0000000003095200>
#将生成器对象转换为元组
print(tuple(a)) # (4, 9, 16, 25, 36, 49, 64, 81, 100, 121)
print(list(g))  # []

g = ((i+2)**2 for i in range(10))  #重新创建生成器对象
print(g.__next__())        #使用生成器对象的__next__()方法获取元素
# 4
print(g.__next__())        #获取下一个元素
文末有福利领取哦~
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

👉**一、Python所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/36a5b28c46094cb1b62b4305815b02c1~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771409874&x-signature=AsbP8y1b0e8gD%2FNJwV15RPIHb28%3D)

👉**二、Python必备开发工具**

![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3020f6b019144972946d1976b31ab2df~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771409874&x-signature=te2J2qfx6fx6qu5Ir7OUwdfOYdA%3D)  
👉**三、Python视频合集**

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/279b4ccb70d44b39b04e58a4f7b7ed49~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771409874&x-signature=IsoJ2HpUPFpE9po%2F4L9U6dmtG%2FU%3D)

👉 **四、实战案例**

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。**(文末领读者福利)**  
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3cc0d22465334cbe8f52e887bc1df662~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771409874&x-signature=olII4lzi3IbNkecfJA1yffAHiNU%3D)

👉**五、Python练习题**

检查学习结果。  
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3b88b2d661054af9aa1f9493fd4f7ba0~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771409874&x-signature=Hbg%2BBrvlNOwovKUlkqq1JeIDeAU%3D)

👉**六、面试资料**

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。  
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/aaf66c73d39b4a32975e56229b063671~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771409874&x-signature=%2FuBT4AnbgubwlGBqZwe7XPg9ac4%3D)

![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/47ab097279e749fd9e59a15b2df33a73~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771409874&x-signature=QF0N0x3%2BVhm8%2F48sIpVkMgJYWoQ%3D)

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传



**了解详情:https://docs.qq.com/doc/DSnl3ZGlhT1RDaVhV**