Python-列表/集合/字典生成器表达式

目录

一、列表生成式

 二、集合生成式

 三、字典生成式

四、元组表达式

五、生成器表达式


一、列表生成式

# 列表生成器:[结果 for item in 可迭代对象 if 条件]
l =['康师傅_老坛酸菜','统计_老坛酸菜','大今野_老坛酸菜','白象']
new_l =[]
for name in l:
    if name.endswith('老坛酸菜'):  # endswith以()为尾
        new_l.append(name)
print(new_l)

l = ['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜', '白象']
# 列表生成器:[结果 for item in 可迭代对象 if 条件]
new_l = [name for name in l if name.endswith('老坛酸菜')]
print(new_l)

new_l = [name for name in l if True]
print(new_l)

new_l =[[i for i in range(10) if i>6] for name in l ]
print(new_l)

运行结果:

['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜']
['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜']
['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜', '白象']
[[7, 8, 9], [7, 8, 9], [7, 8, 9], [7, 8, 9]]

 二、集合生成式

dic = ['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜', '白象']
res ={name for name in dic}
print(res,type(res))

运行结果:

{'康师傅_老坛酸菜', '白象', '统计_老坛酸菜', '大今野_老坛酸菜'} <class 'set'>

 三、字典生成式

l = ['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜', '白象']
res = {name: 7 for name in l}  # name 后面的value必须是固定的
print(res,type(res))

运行结果:

{'康师傅_老坛酸菜': 7, '统计_老坛酸菜': 7, '大今野_老坛酸菜': 7, '白象': 7} <class 'dict'>


l = [('康师傅_老坛酸菜',5), ('统计_老坛酸菜',5), ('大今野_老坛酸菜',5),( '白象',5)]
res = {name: 7 for name in l}  # name 后面的value必须是固定的
print(res,type(res))

运行结果:

{('康师傅_老坛酸菜', 5): 7, ('统计_老坛酸菜', 5): 7, ('大今野_老坛酸菜', 5): 7, ('白象', 5): 7} <class 'dict'>


l = [('康师傅_老坛酸菜',5), ('统计_老坛酸菜',5), ('大今野_老坛酸菜',5),( '白象',5)]
res1 = {name[0]: name[1] for name in l if not name[0].startswith('康师傅')} # 选用不以康师傅开头的
res2 ={k:v for k, v in l if not k.startswith('统计')}
print(res1)
print(res2)

运行结果:

{'统计_老坛酸菜': 5, '大今野_老坛酸菜': 5, '白象': 5}
{'康师傅_老坛酸菜': 5, '大今野_老坛酸菜': 5, '白象': 5}

四、元组表达式

注:元组本身不可变,所以无元组生成器,不可往元组中加值

l = ['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜', '白象']
res = (name for name in l)
print(res,type(res))

运行结果:

<generator object <genexpr> at 0x0000020FB0DE6340> <class 'generator'>

五、生成器表达式

l = ['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜', '白象']
res = (name for name in l)
print(next(res))

运行结果:
康师傅_老坛酸菜


上个文章生成器的知识点----迭代器/生成器
l = ['康师傅_老坛酸菜', '统计_老坛酸菜', '大今野_老坛酸菜', '白象']
res = (name for name in l)
print(next(res))
print(res.send(None))
print(res.send(20))

运行结果:

康师傅_老坛酸菜
统计_老坛酸菜
大今野_老坛酸菜

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值