python - 理解 *x ,= lst

标签 python python-3.x iterable-unpacking

我正在浏览一些旧代码,试图了解它的作用,我遇到了这个奇怪的声明:

*x ,= p

p 是此上下文中的列表。我一直在试图弄清楚这句话的作用。据我所知,它只是将 x 设置为 p 的值。例如:

p = [1,2]
*x ,= p    
print(x)

只是给

[1, 2]

那么这与 x = p 有什么不同吗?知道这个语法在做什么吗?

最佳答案

*x ,= p 基本上是 x = list(p) 的混淆版本,使用 extended iterable unpacking . x 之后的逗号用于使赋值目标成为一个元组(不过它也可以是一个列表)。

*x, = p isx = p 不同,因为前者会创建 copyp (即一个新列表),而后者创建对原始列表的 reference。举例说明:

>>> p = [1, 2]
>>> *x, = p 
>>> x == p
True
>>> x is p
False
>>> x = p
>>> x == p
True
>>> x is p
True

关于python - 理解 *x ,= lst,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190992/

相关文章:

python - Apache Airflow : Pass variable in jinja include

mysql - 如何使用Explain命令使用Python连接Mysql?

python - RDD未在pyspark中保存为文本文件

Scala:元组的并行分配

Python-挑战级别 3

python - 在 Windows 上将原始数据写入物理磁盘(闪存驱动器)失败并显示 "Bad file descriptor"- Python

python - 使用 python 绑定(bind)安装 dlib

python - 明星为自己的类(class)拆包

python - 如何从文件中读取带有字符串键和元组值的字典?

python - Pelican 中类别的介绍页面