在Python语言中,可以使用set构造函数或通过将列表解包到花括号中,从list创建set.例如:

my_list = [1, 2, 3]
my_set = set(my_list)

my_list = [1, 2, 3]
my_set = {*my_list}

Are there any specific reasons 或 use cases where one approach is preferred over the other? What are the advantages 或 disadvantages of each method in terms of perf或mance, readability, 或 any other relevant fact或s?

推荐答案

这其中有一个细微的区别.

set(my_list)将生成绑定到set的可调用函数返回的任何内容.set是set类型的内置名称,但也可以使用全局变量或局部变量来隐藏该名称.

{*my_list},另一方面,always创建一个新的set实例.如果不修改Python实现本身,就不可能更改花括号语法的含义(然后,您将不再实现Python,而是一种非常类似于Python的语言).

在CPython中,使用{*mylist}也可以避免函数调用,它使用BUILD_SETSET_UPDATE操作码,而不是调用set绑定到的任何东西.

Python相关问答推荐

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

@Property方法上的inspect.getmembers出现意外行为,引发异常

如何在Python数据框架中加速序列的符号化

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

在单个对象中解析多个Python数据帧

Python导入某些库时非法指令(核心转储)(beautifulsoup4."" yfinance)

无法连接到Keycloat服务器

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

在Python中计算连续天数

如何检测鼠标/键盘的空闲时间,而不是其他输入设备?

Python—为什么我的代码返回一个TypeError

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

python的文件. truncate()意外地没有截断'

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

使用np.fft.fft2和cv2.dft重现相位谱.为什么结果并不相似呢?

如果不使用. to_list()[0],我如何从一个pandas DataFrame中获取一个值?

有了Gekko,可以创建子模型或将模型合并在一起吗?

Groupby并在组内比较单独行上的两个时间戳

Fake pathlib.使用pyfakefs的类变量中的路径'

如何有效地计算所有输出相对于参数的梯度?