一、推导式
就是一种能够快速生成数据的方式
根据最终要生成的数据,简单划分为
列表推导式
集合推导式
字典推导式
注意没有元组推导式,而是生成器
一、列表推导式
列表推导式:一种可以快速生成列表的方式
[变量 for 变量 in 可迭代对象]
a = [x for x in range(4)]
print(a)
a = [x for x in range(4,10)]
print(a)
a = [x for x in range(4,10,2)]
print(a)
a = [x for x in range(1,10) if x%2!=0]
print(a)
a = [(x,y) for x in range(1,10) for y in range(1,10)]
print(a)
a = [(x,y,z) for x in range(1,10) for y in range(1,10) for z in range(1,10)]
print(a)
二、集合推导式
集合推导式:一种快速生成集合的方式
集合推导式中也可以用if等,与列表推导式在格式上很类似
a = {x for x in range(4)}
print(a)
a = {x for x in range(4,10)}
print(a)
a = {x for x in range(4,10,2)}
print(a)
a = {x for x in range(1,10) if x%2!=0}
print(a)
a = {(x,y) for x in range(1,10) for y in range(1,10)}
print(a)
a = {(x,y,z) for x in range(1,10) for y in range(1,10) for z in range(1,10)}
print(a)
三、字典推导式
字典推导式:一种快速生成字典的方式
快速生成一个1~10内key为某个数此时value为平方的字典
a = {x:x**2 for x in range(1, 11)}
print(a)
列表中嵌套字典
a = [{x:x**2} for x in range(1, 11)]
print(a)
二、拆包
拆包是一种快速提取数据的方式
一、拆元组
例如,有一个元组(11, 22, 33, 44)想快速的提取每个元素且赋值给num1, num2, num3, num4这4个变量
nums = (11, 22, 33, 44) # 定义一个元组
num1 = nums[0] # 通过下标来提取
num2 = nums[1] # 通过下标来提取
num3 = nums[2] # 通过下标来提取
num4 = nums[3] # 通过下标来提取
拆包一行代码搞定
num1, num2, num3, num4 = (11, 22, 33, 44)
nums = (11, 22, 33, 44) # 定义一个元组
num1, num2, num3, num4 = nums
print(num1)
二、拆列表
nums = [11, 22, 33, 44] # 定义一个元组
num1, num2, num3, num4 = nums
print(num1)
print(num2)
print(num3)
print(num4)
三、拆集合
nums = {11, 22, 33, 44}# 定义一个元组
num1, num2, num3, num4 = nums
print(num1)
print(num2)
print(num3)
print(num4)
四、拆字典
nums = {"name":"wang", "age":18,"qq":"520"}
num1, num2, num3 = nums.items()
print(num1)
print(type(num1))
print(num2)
print(num3)
经典
利用拆包进行元素替换而不需要多余变量。
a = 18
b = 20
print(a,b)
a,b =b,a
print(a,b)
a, b = b, a首先要计算=右边b, a此时他们会被当做一个元组即(b, a)就相当于(20, 18)
然后再将a, b = (20, 18)进行计算,此时a为20,b为18