我今天才注意到了这个特性!在什么版本的Python中设置了初始化语法
s={1,2,3} #Set initialisation
t={x for x in s if x!=3} #Set comprehension
t=={1,2}
它是什么版本?我也注意到它已经设定了理解。这是在同一版本中添加的吗?
资源
我今天才注意到了这个特性!在什么版本的Python中设置了初始化语法
s={1,2,3} #Set initialisation
t={x for x in s if x!=3} #Set comprehension
t=={1,2}
它是什么版本?我也注意到它已经设定了理解。这是在同一版本中添加的吗?
资源
在Python 2.3中添加了sets
模块,但内置集合类型已添加到2.4中的语言中,并具有基本相同的接口。 (作为2.6的sets
模块已被弃用。)
所以,你可以使用组早在2.3,只要你
import sets
但是,如果你尝试导入你会得到一个DeprecationWarning
在2.6
集解析,并设置文字语法 - 也就是说,能够说
a = { 1, 2, 3 }
在Python 3.0是新的。具体而言,Python 3.0a1是Python 3.0的第一个公开发布版本,从2007年开始,集合文字和集合解析都存在。Python 3 release notes
2.7的解析和文字后来实现。 3.x Python features incorporated into 2.7
好,测试它:
>>> s = {1, 2, 3}
File "<stdin>", line 1
s = {1, 2, 3}
^
SyntaxError: invalid syntax
我跑2.5,所以我会假设这句法是有时在2.6增加(更新:实际上添加了3.0,但伊恩打败了我)。我应该很快就会升级。我很高兴他们为它添加了语法 - 我很厌倦set([1, 2, 3])
。
自集合首次创建以来,集合解析可能已经存在。 Python文档网站不是很清楚,但我不会想象集合在没有迭代器的情况下会非常有用。
我想我在问题上还不够清楚。这是当集合被添加并设置操作符时。不要低估这个答案 – Casebash 2009-10-23 06:13:06
大约2-3天前,set literal和set和dict comprehension语法被反向移植到2.x trunk。所以我想这个功能应该可以从Python 2.7中获得。
再一次,这并不回答这个问题,但这是我的不清楚 – Casebash 2009-10-23 06:19:40
带括号的特殊集合理解语法是Python 3.0的新增功能,但您可以在2.5和更高版本中执行集合理解更详细的(和丑陋的)'set([i for i in])' – 2009-10-23 06:26:16
它被列为Python 3.0中的一个新特性。 http://docs.python.org/dev/3.0/whatsnew/3.0.html。它不能在Python 2.6中完成 – Casebash 2009-10-23 06:27:27