Python 推导式

#4.推导式 有叫生成式的
#推导式有 : 列表推导式/字典推导式/集合推导式
#字符出和元组没有推导式
#4.1 列表推导式
#作用 : 用一个表达式创建一个有规律的列表或控制一个有规律的列表。列表推导式又叫列表生成式
#while循环创建有规律的列表
list1 = []
i = 0
while i < 10:
    list1.append(i)
    i += 1
print(list1)
#for 循环创建有规律的列表
list2 = []
for i in range(10):
    list2.append(i)
print(list2)
#列表推导式创建有规律的列表
list3 = [i for i in range(10)] #一行代码即可,极大的简化了代码量
print(list3)
#带 if 的列表推导式
#需求,创建一个0到10 的列表,步长为2
list4 = [i for i in range(0, 10, 2)] #不带 if 的列表推导式
print(list4)
list5 = [i for i in range(10) if i % 2 == 0]
print(list5)

#多个for 循环实现列表推导式
#先不用列表推导式实现
list6 = []
for i in range(1, 3):
    for j in range(0, 3):
        list6.append((i, j))
print(list6)  #输出 [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
#用列表推导式
list7 = [(i, j) for i in range(1, 3) for j in range(0, 3)]
print(list7)  #输出 [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

#4.2字典推导式
#快速合并列表为字典,或者提取字典中的目标数据
#
dict1 = {i:i**2 for i in range(1,5)}
print(dict1)
l1 = ['name', 'age', 'gender']
l2 = ['Jack', 20, 'Man']
dict1 = {ll1: ll2 for ll1 in l1 for ll2 in l2}
dict2 = {l1[i]:l2[i] for i in range(len(l1))}
print(dict1)  #输出 {'name': 'Man', 'age': 'Man', 'gender': 'Man'}
print(dict2)  #输出 {'name': 'Jack', 'age': 20, 'gender': 'Man'}
l1 = ['name', 'age', 'gender']
l2 = ['Jack', 20, 'Man', 'China']
#dict3 = {l1[i]:l2[i] for i in range(len(l2))} #报错 IndexError: list index out of range
l1 = ['name', 'age', 'gender', 'Country']
l2 = ['Jack', 20, 'Man']
#dict3 = {l1[i]:l2[i] for i in range(len(l1))} #报错 IndexError: list index out of range
#提取字典中的目标数据 比如提取分数大于多少的,或则年龄大于多少的,或者工资高于多少的,或者销量大于多少的
dict3 = {'S1':25000, 'S2':13000, 'S3':20000, 'S4':16000, 'S5':18000, 'S6':35000}
print(dict3) #输出 {'S1': 25000, 'S2': 13000, 'S3': 20000, 'S4': 16000, 'S5': 18000, 'S6': 35000}
dict3_0 = {key:value for key, value in dict3.items() if value > 20000}
print(dict3_0) #输出 {'S1': 25000, 'S6': 35000}

#4.3 集合推导式
l3 = [1, 1, 2]
s1 = {i**2 for i in l3}
print(s1)  #输出 {1, 4}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值