目录
- python 推导式
- 列表推导式
- 字典推导式
- 集合推导式
python 推导式
列表推导式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# BY:wenchao.Li time: 2021/7/12
# 列表推导式 格式:[表达式 for 变量 in 旧列表] 或者 [表达式 for 变量 in 旧列表 if 条件]
#旧列表 》》 新列表
#过滤掉长度小于或者等于 3的名字
names=['bom','lucy','airbor','shaire','pom']
result=[name for name in names if len(name)>3]
print (result)
#过滤掉长度小于或者等于 3的名字并把首字母大写
result=[name.capitalize() for name in names if len(name)>3]
result1=[name.title() for name in names if len(name)>3]
print (result)
print (result1)
#将1-100内能被3整除并且被5整除的的列表输出
result=[num for num in range(1,100) if num % 3 == 0 and num % 5 == 0]
print (result)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# BY:wenchao.Li time: 2021/8/23
dict1={'a':'A','b':'B','c':'C','d':'C'}
#字典推导式,这里我把key ,value 颠倒,这里他会去重,比如C的value,他会取值最后一个
newdict={value:key for key,value in dict1.items()}
print (dict1)
print (newdict)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# BY:wenchao.Li time: 2021/8/23
#这是一段很普通的写法脚本,一大串
def func():
newlist=[]
for i in range(5): #偶数
if i%2 == 0:
for j in range(10):
if j%2 == 0: #偶数
newlist.append((i,j))
return(newlist)
func()
#利用列表推导式,可以这样写替代
newlist=[(x,y) for x in range(5) if x % 2 == 0 for y in range(10) if y %2 ==0 ]
print (newlist)
字典推导式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# BY:wenchao.Li time: 2021/8/23
dict1={'name':'xiaoming','selary':4000}
dict2={'name':'xiaohua','selary':6000}
dict3={'name':'xiaoli','selary':3000}
dict4={'name':'xiaozhao','selary':9000}
#字段推导式,如果用到if,else的话,if ,else需要用到for前面
list1=[dict1,dict2,dict3,dict4]
print (list1)
#薪资大于5000的每人加200,低于5000的每人加500,这一步加的只是工资,得到一个新的工资列表列表
newlist=[employee['selary'] + 200 if employee['selary'] > 5000 else employee['selary'] + 500 for employee in list1]
print (newlist)
集合推导式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# BY:wenchao.Li time: 2021/8/23
list=[1,2,3,5,1,2,3,4]
#根据list,在list值的基础上生成集合,集合会自动重复,并在基础上加1
set1={x+1 for x in list}
print(set1)