推导式和拆包
推导式
这是一个快速地生成数据的方式
比如在数组里面存1, 3, 5…99
[x for x in range(1, 100) if x % 2 == 0]
只一个不可以生成元组, 可以用于列表, 字典和集合
这一个循环是可以嵌套的
[(x, y) for x in range(1, 3) for y in range(3)]
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
- 实际生成一个[[1, 2, 3], [4, 5, 6] … ]的列表
a = [x for x in range(1, 101)]
b = [a[x:x+3] for x in range(0, len(a), 3)]
生成字典
{x:x**2 for x in range(1, 11)}
拆包
一种快速的提取数据的方式
nums = (11, 22, 33)
num1, num2, num3 = nums
左侧的数据的个数必须和右侧的个数一样, 拆集合的话这一个的顺序不一定
对字典进行拆包的时候默认获取的是key的值
for temp in dict.items():a, b = tempprint(a, b)
可以使用这一个方式对字典进行拆包
for k, v in dict.items():print(k, v)
使用这一个更加简单
可以使用这一种方法实现交换数据
a, b = b, a
在python里面默认把一个
11, 22, 33
这样的数据当做一个元组
使用*和**进行拆包
如果一个函数需要的参数恰好是一个元组, 数组, 集合里面的所有数值
def func(a, b, c):pass
nums = [11, 22, 33]
func(nums[1], nums[2], nums[3])
func(*nums)
这两种实际是相同的, **是对知字典进行拆包
def func(name, web, age):pass
jiao = {"name": "jiao", "web": "www.xvsenfeng.asia", "age": 18
}
func(**jiao)
这一个函数的参数的名字需要是这一个字典里面的key的值
实际传入的参数格式
(name = jiao, web = "www.xvsenfeng.asia", age = 18)
在实际使用的时候推荐使用不定长参数