列表生成式

一、列表生成式

列表生成试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'}

 

posted @   Sunzz  阅读(107)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示