解包运算符
阅读量:
* 和 ** 为 Python 中的解包/打包运算符
运用在函数传参,详见 无关键字参数(args)和有关键字参数(kwargs)
可将列表、元组、集合、字典解构为独立的元素赋值给函数中的参数,但无法直接在表达式右侧使用赋值给左侧的变量
num_list = [1, 2, 3, 4, 5]
print(*num_list)
>>> 1 2 3 4 5
可合并两个列表,或转换类型
num_list1 = [1, 2, 3]
num_list2 = [4, 5, 6]
(*num_list1,*num_list2)
>>> (1, 2, 3, 4, 5, 6)
[*num_list1,*num_list2]
>>> [1, 2, 3, 4, 5, 6]
{*num_list1,*num_list2}
>>> {1, 2, 3, 4, 5, 6}
可用在表达式左侧,接收多个元素打包为列表
first, *middle, last = [1, 2, 3, 4, 5]
print(first, middle, last)
>>> 1 [2, 3, 4] 5
上述例子中,若列表中仅有两个元素,则 middle
为空列表
first, *middle, last = [1, 2]
print(first, middle, last)
>>> 1 [] 2
若仅需要打包元素
*num_list, = 1, 2, 3
print(num_list)
>>> [1, 2, 3]
对字典进行结构时,* 只会结构字典中 key 的列表,而 ** 需要在函数传参的过程中使用。使用 ** 可对两个字典进行拼接
num_dict = {'a': 1, 'b': 2, 'c': 3}
num_dict_2 = {'d': 4, 'e': 5, 'f': 6}
{**num_dict, **num_dict_2}
>>> {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
#待整理笔记
反向链接
到头儿啦~