列表生成式
一、列表生成式
列表生成试List Comprehensions,是Python内置的非常简单却强大的可以用了创建list的生成试。
1 为何要使用列表生成试
举个例子,要生成list[1,2,3,4,5,6,7]可以用list(range(1,8)):
>>> list(range(1,8)) [1, 2, 3, 4, 5, 6, 7]
如果要生成[1x1,2x2…..10x10]怎么办,方法一是for循环
>>> for i in range(1,11): list1.append(i*i) >>> list1 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
循环太繁琐了,二使用列表生成试一行语句就可以搞定上边的list
>>> [x*x for x in range(1,11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2 列表生成试的一般格式
(1)遍历模式
[变量(加工后的变量) for 变量 in iterable] 遍历模式
如:list = [i for i in range(1,11)]
>>> list = [i for i in range(1,11)] >>> list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(2)筛选模式
[变量(加工后的变量) for 变量 in iterable if 条件] 筛选模式
如:list2 = [i for i in range(1,31) if i % 3 == 0]
>>> list2 = [i for i in range(1,31) if i % 3 == 0] >>> list2 [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
(3)三元模式(循环模式)
# 构建一个列表:列表里面的元素是1~20,但是能被3整除元素替换成*。
ret = '*' if 3>2 else 1 print(ret) print(['*' if i % 3 == 0 else i for i in range(1,21)])
结果为:
1 | [1, 2, '*' , 4, 5, '*' , 7, 8, '*' , 10, 11, '*' , 13, 14, '*' , 16, 17, '*' , 19, 20] |
3 列表生成式特点:
优点:一行搞定,节省代码行数,高逼格。
缺点:
1,不能用debug模式。
2,列表推导式有毒,任何列表都可以通过常规构建去构建,复杂的列表不能通过列表推导式。
二、生成器表达式
与列表推导式几乎一模一样, 就是[] 换成 ()
l1 = ['python%s' %i for i in range(1,26)] gentor = ('python%s' %i for i in range(1,26)) print(gentor) for i in gentor: print(i)
1 2 3 4 5 6 7 | 结果为: <generator object <genexpr> at 0x0000000001E12F10> python1 python2 python3 .... python25 |
三、字典推导式, 集合推导式
mcase = {'a': 10, 'b': 34, 'c': 20, 'd': 15} print({value:key for key,value in mcase.items()}) 结果为:{10: 'a', 34: 'b', 20: 'c', 15: 'd'}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)