学习python的day8之推导式
推导式(生成式)
只有列表,集合,字典有推导式
一、列表推导式
创建一个0-10的列表
while循环实现
list1 = [] i = 0 while i<10: list1.append(i) i += 1 print(list1)
for循环实现
list1 = [] for i in range(10): list1.append(i) print(list1)
列表推导式实现
list1 = [i for i in range(10)] print(list1)
需求:创建0-10偶数的列表
range()实现
list1 = [i for i in range(0,10,2)] print(list1)
if条件控制
list1 = [i for i in range(10) if i % 2 == 0] print(list1)
多个for循环列表推导式(相当于for嵌套循环)
需求:生成列表:[(1,0), (1,1), (1,2), (2,0), (2,1), (2,2)]
list1 = [(i,j) for i in range(1,3) for j in range(3)] print(list1) ''' 输出: [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] '''
二、字典推导式
作用:快速合并列表为字典或提取字典中的目标数据。
需求:创建字典key是1-5,value是对应的key的2次方
dict = {i:i**2 for i in range(1,5)} print(dict) ''' 输出: {1: 1, 2: 4, 3: 9, 4: 16} '''
需求:合并下列两个列表为字典
list1 = ['name', 'age', 'gender']
list2 = ['as_scheduled', 19, '男']
list1 = ['name', 'age', 'gender'] list2 = ['as_scheduled', 19, '男'] dict2 = {list1[i]:list2[i] for i in range(len(list1))} print(dict2) ''' 输出: {'name': 'as_scheduled', 'age': 19, 'gender': '男'} '''
注意:当两个列表中元素个数不一样时,需要获取元素个数少的列表的长度,获取元素个数多的列表的长度,程序会报错。
提取字典中的目标数据
需求:提取value大于100的数据
dict1 = {'A':150, 'B':89, 'C':261, 'D':92} dict2 = {key:value for key,value in dict1.items() if value >100} print(dict2) ''' 输出: {'A': 150, 'C': 261} '''
三、集合
需求:创建一个集合,是列表[1,1,2,3]的二次方
list1 = [1, 1, 2, 3, 4] set1 = {i**2 for i in list1} print(set1) ''' 输出: {16, 1, 4, 9} '''