Python 为什么';这一套不管用吗?

Python 为什么';这一套不管用吗?,python,Python,在Python2.6.5中,给出以下列表 mylist=[20,30,25,20] 为什么这套理解不起作用 >>> {x for x in mylist if mylist.count(x) >= 2} File "<stdin>", line 1 {x for x in mylist if mylist.count(x) >= 2} ^ SyntaxError: invalid syntax >>{x代表mylist中的

在Python2.6.5中,给出以下列表 mylist=[20,30,25,20]

为什么这套理解不起作用

>>> {x for x in mylist if mylist.count(x) >= 2}
  File "<stdin>", line 1
    {x for x in mylist if mylist.count(x) >= 2}
         ^
SyntaxError: invalid syntax
>>{x代表mylist中的x,如果mylist.count(x)>=2}
文件“”,第1行
如果mylist.count(x)>=2,则mylist中的x为{x}
^
SyntaxError:无效语法

谢谢。

您使用的是什么版本的Python?设定理解。如果您使用的是旧版本,则会出现
语法错误:无效语法

>>> {x for x in mylist if mylist.count(x) >= 2}
  File "<stdin>", line 1
    {x for x in mylist if mylist.count(x) >= 2}
         ^
SyntaxError: invalid syntax

在v2.7.2中对我有效,我得到了关于它的
set([20])
什么“不起作用”?在3.2中对我也有效,尽管我注意到
{x代表x,在collections.Counter(mylist)中计数。如果计数>=2}
是O(n)而不是O(n^2)方法。啊。。我可以在Linux下用v2.6.5重现这个错误,所以我打赌您使用的是v2.7之前的版本。(我的错误消息包括另一行关于
SyntaxError:invalid syntax
)也是2.7中新增的:set literal(
{1,2,3,4,5}==set([1,2,3,4,5])
>>> {x for x in mylist if mylist.count(x) >= 2}
set([20])
$ python2.6
>>> mylist = [20, 30, 25, 20]
>>> {x for x in mylist if mylist.count(x) >= 2}
  File "<stdin>", line 1
    {x for x in mylist if mylist.count(x) >= 2}
         ^
SyntaxError: invalid syntax

$ python2.7
>>> mylist = [20, 30, 25, 20]
>>> {x for x in mylist if mylist.count(x) >= 2}
set([20])
>>> set(x for x in mylist if mylist.count(x) >= 2)
set([20])