Python中级之解压赋值

解压赋值

【一】解压赋值的概念

  • 解压赋值是指将一个可迭代对象(如列表、元组、字典的键值对等)中的元素拆分并分配给多个变量。
  • 这种技术非常方便,可以简洁地从一个数据结构中提取元素并将它们分配给多个变量。需要确保变量的数量与可迭代对象中的元素数量匹配,否则会引发 ValueError
  • 总之,解压赋值是一种使代码更简洁、可读性更强的技术,用于同时访问可迭代对象中的多个元素。
可迭代对象的概念可以查看一下后面的文章:Python高级之迭代器与生成器 - Lea4ning - 博客园 (cnblogs.com)
不用看生成器,了解一下可迭代对象就可以了

【二】解压赋值与通过多个变量赋值

  • 解压赋值和通过多个变量赋值是两个概念,它们在某种程度上是相关的,但有一些微妙的区别。
  • 多个变量赋值包括了解压赋值,不用在概念上钻牛角尖,解压赋值只是多了***的解包方法

解压赋值与通过多个变量赋值的区别:

  1. 语法:
    • 解压赋值通常使用 *** 运算符。
    • 通过多个变量赋值直接将元素赋值给变量。
  2. 数据类型:
    • 解压赋值适用于可迭代对象,如列表、元组、字典等。
    • 通过多个变量赋值适用于任何可迭代或可索引的数据结构,例如字符串、列表、元组等。

总的来说,解压赋值更强调的是从一个可迭代对象中提取元素并赋值给多个变量,而通过多个变量赋值则更侧重于将整个数据结构中的元素赋值给多个变量。在语法上有一些区别,但在实际使用中,两者可能会交叉使用,具体取决于你的需求和编码风格。

解压赋值:

解压赋值是指将一个可迭代对象(如列表、元组、字典的键值对等)中的元素分别赋值给多个变量。这通常使用 * 运算符(在列表和元组中)或 ** 运算符(在字典中)来实现。

示例:

my_list = [1, 2, [3, 4], {'5': 6}]
a, b, c, d = my_list
print(a, b, c, d)  # 1 2 [3, 4] {'5': 6}


# 通过 ** 为txt解压赋值 并加载到new_dict字典中
txt = {'a':1,'b':2}
new_dict ={}
new_dict.update(**txt)
print(new_dict)

image-20231216185813711

# 而通过解压赋值,我可以直接将数据传入,而不需要挨个进行关键字传参
# 解压赋值,使用 * / ** 的情况不是很多,因为好像 * 的限制很多,很多情况下用不了

通过多个变量赋值:

通过多个变量赋值是指直接将一个数据结构(如字符串、列表、元组等)中的元素赋值给多个变量。这并不涉及到解压操作,而是将整个数据结构赋值给多个变量。

示例:

my_string = "abc"
a, b, c = my_string

my_list = [1, 2, 3]
x, y, z = my_list
  • 实际上,字符串是通过多个变量赋值拿到其中每一个字符的,这就是字符串的可迭代性。当你对字符串进行迭代时,会访问字符串中的每一个字符。
my_string = "abc"
for char in my_string:
    print(char)
txt = 'abc'
a,b,c = txt
print(a,b,c)   # a b c

* 列表解压**字典解压赋值

字符串解压赋值

x, y = '12'
print(x)    # 1
print(y)    # 2
posted @ 2023-12-16 19:04  Lea4ning  阅读(59)  评论(0编辑  收藏  举报