Python哪个版本添加了集合初始化语法
我今天才注意到这个功能!
s={1,2,3} #Set initialisation
t={x for x in s if x!=3} #Set comprehension
t=={1,2}
这个功能是在哪个版本里呢?我还发现它有集合推导式。这个功能是在同一个版本里添加的吗?
资源
3 个回答
0
最近,集合字面量和集合、字典推导的语法被移植到了Python 2.x的主干版本,大约在2到3天前。所以我想这个功能应该从Python 2.7开始就可以用了。
0
好吧,来测试一下:
>>> s = {1, 2, 3}
File "<stdin>", line 1
s = {1, 2, 3}
^
SyntaxError: invalid syntax
我现在用的是2.5版本,所以我猜这个语法是在2.6版本中加入的(更新一下:其实是在3.0版本中加入的,不过Ian比我早说了)。我应该尽快升级一下。我很高兴他们添加了这个语法——我对用set([1, 2, 3])
这种方式有点厌倦了。
集合推导式可能从集合刚被创建的时候就存在了。Python的文档网站不是很清楚,但我想没有迭代器,集合的用处也不会太大。
12
在Python 2.3版本中,增加了一个叫做sets
的模块,但真正的内置集合类型是在2.4版本中加入的,基本上用法是一样的。(到了2.6版本,sets
模块就被标记为不推荐使用了。)
所以,只要你使用的是2.3版本及以上,就可以使用集合,只要你
import sets
不过,如果你在2.6版本中尝试导入这个模块,你会收到一个DeprecationWarning
的警告。
集合推导式和集合字面量语法——也就是你可以这样写
a = { 1, 2, 3 }
是在Python 3.0中新增的。具体来说,集合字面量和集合推导式在2007年Python 3.0的第一个公开版本3.0a1中就已经存在了。Python 3发布说明
这些推导式和字面量后来也在2.7版本中实现了。3.x版本的Python特性被纳入2.7