Почему это установленное понимание не работает?

В 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

Спасибо.

Ответы

Ответ 1

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

Ответ 2

Какую версию 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])