Python的三元表达式、列表生成式和字典生成式
作者:互联网
Python的三元表达式、列表生成式和字典生成式
- 三元表达式
- 列表生成式
- 字典生成式
- 匿名函数
一、三元表达式
1. 三元表达式的格式
当功能需求仅仅是二选一的情况下,推荐使用三元表达式
值1 if 条件 else 值2 '''条件成立用值1 不成立用值2'''
三元表达式在函数中使用
def my_max(a, b): if a > b: return a else: return b
def my_max(a, b): return a if a > b else b
2. 示例
is_free = input('is_free>>>:').strip() is_free = '收费' if is_free=='y' else '免费'
条件成立采用if前面的值 if 条件 else 条件不成立采用else后面的值
三元表达式尽量不要嵌套使用
res = '干饭' if 10 > 2 else '不干饭' print(res) res = '干饭' if 10 > 2 else ('不管饭' if 2 >5 else '写的啥!') print(res)
is_free = input('电影是否收费(y/n)>>>:').strip() if is_free == 'y': print('收费') else: print('免费') print('收费' if is_free == 'y' else '免费')
username = input('username>>>:') res = 'NB' if username == 'jason' else 'SB' print(res)
二、列表生成式
使用频率很高
1. 列表生成式的格式
[通过条件判断之后的变量名 for 变量名 in 可迭代对象 if 条件]
l = [1,2,3,4,5,6,7] res = [i+1 for i in l if i != 4]
2. 示例
name_list = ['jason', 'kevin', 'tony', 'jerry'] # 给列表中所有的人名加上_DSB后缀 '''传统做法''' # 1.定义一个空列表 new_list = [] # 2.for循环老列表 for name in name_list: # 3.生成新的名字 new_name = '%s_DSB'%name # 4.添加到新的列表中 new_list.append(new_name) print(new_list) '''列表生成式''' res = ['%s_DSB' % name for name in name_list] print(res) '''传统做法''' # 1.定义一个空列表 new_list = [] # 2.for循环老列表 for name in name_list: # 3.生成新的名字 if name == 'jason': continue else: new_name = '%s_DSB'%name # 4.添加到新的列表中 new_list.append(new_name) print(new_list) '''列表生成式''' res = ['%s_DSB' % name for name in name_list if name != 'jason'] print(res)
三、字典生成式
1. 枚举
enumerate(l,start=1)
enumerate(l1)
针对该方法使用for循环取值,每次会产生两个结果。
第一个是从0开始的数字
第二个是被循环对象里面的元素
还可以通过start参数控制起始位置
for i, j in enumerate(l1, start=1): print(i, j) name_list = ['jason', 'kevin', 'tony', 'jerry'] res = {i: j for i, j in enumerate(name_list) if j != 'jason'} print(res) res1 = {i for i, j in enumerate(name_list)} print(res1, type(res1))
2. 字典
res = { i:j for i,j in enumerate(l)}
# l1 = ['name', 'age', 'hobby'] # l2 = ['jason', 18, 'read'] # new_dict = {} # for i in range(len(l1)): # new_dict[l1[i]] = l2[i] # print(new_dict) # count = 0 # for i in l1: # print(count,i) # count += 1
3. 集合
res = {i for i,j in enumerate(l)} # 小括号不是生成式 是迭代器
四、匿名函数
1. 匿名函数的概念
没有名字的函数
2. 匿名函数的语法结构
lambda 形参:返回值
匿名函数一般不会单独使用,都是配合其他函数一起使用
3. 示例
print(lambda x:x**2) def index(): pass print(index) print((lambda x: x ** 2)(2)) res = lambda x: x ** 2 print(res(2))
4. map() 映射
# map() 映射
# map(函数名,可迭代对象) 结果是一个迭代器
l = [1, 2, 3, 4, 5, 6, 7, 8, 9] def index(n): return n ** 2 print(list(map(lambda x:x**2, l)))
标签:name,Python,res,生成式,list,else,print,new,字典 来源: https://www.cnblogs.com/balzac/p/15579015.html