学习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}
'''

 

posted @ 2020-10-18 21:55  as_scheduled  阅读(116)  评论(0编辑  收藏  举报