python3中的推导式
列表推导式
列表推导式的使用方法:
[表达式 for 变量 in 列表] 这样的,以及[表达式 for 变量 in 列表 if 条件]
lst = [1,2,3,4,5]
lst1 = [i for i in lst if i>3]
print(lst1)
'''
[4, 5]
'''
lst = ['qbz95','qbz191','qcq171','xm7','m4','akm']
lst1 = [print(i) for i in lst if len(i)<=3]
print(lst1)
'''
xm7
m4
akm
[None, None, None]
'''
元组推导式
元组推导式的使用方法和列表推导式的使用方法基本一致,外面包裹的[]变成了()。
可以通过range,字典,列表,元组,集合等快速生成一个新的元组,举例:
a = (i for i in range(10))
print(a)
'''
<generator object
'''
可以看到返回的类型是一个生成器类型,这个时候我们可以使用tuple函数将这个生成器类型转换为元组类型,举例:
print(tuple(a))
'''
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
'''
字典推导式
字典推导式的使用方法:
{键_表达式 : 值_表达式 for 变量 in 列表} #要注意这里最后是列表而不是字典
{键_表达式 : 值_表达式 for 变量 in 列表 if 条件表达式}
lst = ['qbz95','qcq171','xm7','m4','akm']
dic = {key:len(key) for key in lst}
print(dic)
'''
{'qbz95': 5, 'qcq171': 6, 'xm7': 3, 'm4': 2, 'akm': 3}
'''
print(type(dic))
'''
<class 'dict'>
'''
提供3个数字,并以三个数字为键,三个数字的平方为值来创建字典:
x = list()
for i in range(3):
input_val = input(f'请输入第{i+1}个数字')
x.append(int(input_val))
print('最后的列表为',x)
new_dic = {value:value**2 for value in x}
print('最后的字典为 '+ str(new_dic))
'''
最后的列表为 [4, 1, 7]
最后的字典为 {4: 16, 1: 1, 7: 49}
'''
集合推导式
集合推导式的使用方法:
{表达式 for 变量 in 序列}
{表达式 for 变量 in 序列 if 条件判断}
new_set = {i**2 for i in range(10)}
print(new_set)
'''
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
'''
集合推导式和字典推导式很像,都是用花括号进行分隔,不同点在于字典推导式前方表达式中的形式为key:value,而集合推导式中的表达式部分的形式为value,输出的格式不同,这就是两者之间的区别。
new_set1 = {x for x in 'aboiasjdfoic' if x not in 'abc'}
print(new_set1)
'''
{'f', 's', 'i', 'd', 'j', 'o'}
'''