2.2.5Python-推导式

总目录:https://blog.csdn.net/qq_41106844/article/details/105553392

Python - 子目录:https://blog.csdn.net/qq_41106844/article/details/105553333

 

 

推导式

推导式分为三种,分别为列表推导式,字典推导式,集合推导式。

推导式是Python中最受欢迎的功能之一,可以便捷的对族元素进行过滤,并得到元素执行变形。

 

列表推导式

result=[exp for val in collection if condition]  #列表推导式格式

这行推导式的具体含义为:

result = []

for val in collection:

    if condition:

        val=exp

        result.append(val)

 

嵌套推导式格式

嵌套推导式主要用于要进行二次筛选或者嵌套序列()

result1=[exp for val in collection if condition for exp in val if condition]

result2=[[exp for exp  in val if condition] for val in collection if condition]

嵌套推导式的具体含义为:

result1 = []

for val in collection:

    if condition:

        for exp in val:

            if condition:

                val=exp

                result.append(val)

但是不同的书写方法会导致结果的不同。

标注:

exp:是在最终推导结果后的变形条件(在for后担任引导变量时不能进行变形)

val:推导过程中的主变量名,exp条件内的变量必须以val为主

collection:序列名(可以使列表,字典,集合)

condition:推导条件,筛选出符合条件的元素。(可选)

 

普通推导式例子

li=[i*2 for i in range(10) if i %2==0]

print(li)

[0,4,8,12,16]

嵌套推导式例子1

lstr = [('java','python','c++'),('for','while','do...while'),('in','isnull','not null')]

result = [x for tu in lstr for x in tu if len(x)>3]

print(result)

['java', 'python', 'while', 'do...while', 'isnull', 'not null']

 

嵌套推导式例子2

lstr = [('java','python','c++'),('for','while','do...while'),('in','isnull','not null')]

result2 = [[ x for x in tu ] for tu in lstr]

print(result2)

[['java', 'python', 'c++'], ['for', 'while', 'do...while'], ['in', 'isnull', 'not null']]

 

 

字典推导式

{key-expr : value-expr for value in collection if condition}#字典推导式格式

例子1

按照列表顺序建立字典

strings = ['import', 'is', 'with', 'if', 'file', 'exception']

A = {key: val for val, key in enumerate(strings)}

print(A)

{'import': 0, 'is': 1, 'with': 2, 'if': 3, 'file': 4, 'exception': 5}

 

例子2

快速更换key和value

mcase = {'a': 10, 'b': 34}

B= {v: k for k, v in mcase.items()}

print (B)

{10: 'a', 34: 'b'}

 

例子3

分组汇总

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}

mcase_frequency = {

    k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)

  for k in mcase.keys()

  if k.lower() in ['a','b']

}

print (mcase_frequency)

{'a': 17, 'b': 34}

 

集合推导式

集合推导式和列表推导式是一样的,只不过把外面换成了大括号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值