Python集:为什么my_set = {* my_list}无效?

时间:2016-03-24 11:27:25

标签: python set kwargs

我无法弄清楚为什么这段代码不起作用

>>> my_list = [1,2,3,4,5]
>>> my_set = {*my_list}
   File "<stdin>", line 1
    my_set = {*my_list}
          ^
SyntaxError: invalid syntax
在python中使用

*args来解压缩列表。我的期望是上面的操作会产生一组,但事实并非如此。 Python中的* args和** kwargs只能用于将参数作为函数传递吗?

我知道set()函数,但很奇怪为什么这种语法不起作用。

2 个答案:

答案 0 :(得分:6)

感谢PEP0448,这些天 工作,但您必须升级到3.5:

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

也就是说,set(my_list)是将列表转换为集合的明显方式,因此它应该使用的方式。

答案 1 :(得分:0)

以下是使用预定义set

声明list的方法
my_list = [1,2,3,4,5]  
my_set = set(my_list)

如果您不确定可以将多少参数传递给 函数 ,则可以使用*args,即它允许您传递任意数量的 功能 的参数。

总之,是的 - *args只是 在Python之前的 功能 标头中使用版本3.5。