13

在 Python 2.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

谢谢你。

4

2 回答 2

26
$ 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])

您可以在 python2.6 中使用显式set和 a来完成结果generator

>>> set(x for x in mylist if mylist.count(x) >= 2)
set([20])
于 2012-07-15T00:35:50.210 回答
8

你使用的是什么版本的 Python?集合推导出现在 2.7.x+ 和 3.x+中。如果您使用的是旧版本,您将获得SyntaxError: invalid syntax

>>> {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

Python 2.7.x+ / 3.x+ 并非如此:

>>> {x for x in mylist if mylist.count(x) >= 2}
set([20])
于 2012-07-15T00:32:59.983 回答