Python哪个版本添加了集合初始化语法

4 投票
3 回答
1603 浏览
提问于 2025-04-15 15:18

我今天才注意到这个功能!

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

撰写回答