2012-07-15 13 views
14

In Python 2.6.5, dato questo elenco mylist = [20, 30, 25, 20]Perché non funziona questa comprensione?

Perché questa comprensione del set non funziona?

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

Grazie.

+1

funziona per me con v2.7.2, ottengo 'set ([20]) " – Levon

+1

Cosa" non funziona "a riguardo? – kindall

+1

http://docs.python.org/dev/whatsnew/2.7.html#python-3-1-funzioni – jdi

risposta

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

Puoi realizzare i risultati in python2.6 utilizzando un esplicito set, e un generator:

>>> set(x for x in mylist if mylist.count(x) >= 2) 
set([20]) 
+2

Anche nuovo in 2.7: Il set letteral ('{1, 2, 3, 4, 5} == set ([1, 2, 3, 4, 5])') –

8

Quale versione di Python stai usando? Imposta le comprensibilità appeared in 2.7.x+ and 3.x+. Se si utilizza una versione precedente, si otterrà una 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 

Questo non è il caso con Python 2.7.x +/3.x +:

>>> {x for x in mylist if mylist.count(x) >= 2} 
set([20]) 
Problemi correlati