Reputation: 10685
In Python 2.6.5, given this list mylist = [20, 30, 25, 20]
Why does this set comprehension not work?
>>> {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
Thank you.
Upvotes: 13
Views: 12348
Reputation: 92559
$ 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])
You can accomplish the results in python2.6 using an explicit set
, and a generator
:
>>> set(x for x in mylist if mylist.count(x) >= 2)
set([20])
Upvotes: 27
Reputation: 235994
What version of Python are you using? Set comprehensions appeared in 2.7.x+ and 3.x+. If you're using an older version, you'll get a 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
That is not the case with Python 2.7.x+ / 3.x+ :
>>> {x for x in mylist if mylist.count(x) >= 2}
set([20])
Upvotes: 8