Skip to content

推导式和拆包

推导式

这是一个快速地生成数据的方式

比如在数组里面存1, 3, 5...99

python
[x for x in range(1, 100) if x % 2 == 0]

只一个不可以生成元组, 可以用于列表, 字典和集合

这一个循环是可以嵌套的

python
[(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] ... ]的列表
python
a = [x for x in range(1, 101)]
b = [a[x:x+3] for x in range(0, len(a), 3)]

生成字典

python
{x:x**2 for x in range(1, 11)}

拆包

一种快速的提取数据的方式

python
nums = (11, 22, 33)
num1, num2, num3 = nums

左侧的数据的个数必须和右侧的个数一样, 拆集合的话这一个的顺序不一定

对字典进行拆包的时候默认获取的是key的值

python
for temp in dict.items():
    a, b = temp
    print(a, b)

可以使用这一个方式对字典进行拆包

python
for k, v in dict.items():
    print(k, v)

使用这一个更加简单

可以使用这一种方法实现交换数据

python
a, b = b, a

在python里面默认把一个11, 22, 33这样的数据当做一个元组

使用*和**进行拆包

如果一个函数需要的参数恰好是一个元组, 数组, 集合里面的所有数值

python
def func(a, b, c):
    pass
nums = [11, 22, 33]
func(nums[1], nums[2], nums[3])
func(*nums)

这两种实际是相同的, **是对知字典进行拆包

python
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)

在实际使用的时候推荐使用不定长参数