总目录: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}
集合推导式
集合推导式和列表推导式是一样的,只不过把外面换成了大括号。