2012-07-15 35 views
14

Trong Python 2.6.5, được cung cấp danh sách này mylist = [20, 30, 25, 20]Tại sao thiết lập này không hoạt động?

Tại sao thiết lập hiểu này không hoạt động?

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

Cảm ơn bạn.

+1

trình cho tôi với v2.7.2, tôi nhận được 'set ([20]) ' – Levon

+1

Điều gì" không hoạt động "về nó? – kindall

+1

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

Trả lời

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

Bạn có thể đạt được các kết quả trong python2.6 sử dụng rõ ràng set, và một generator:

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

Cũng mới trong 2.7: Tập hợp chữ ('{1, 2, 3, 4, 5} == bộ ([1, 2, 3, 4, 5])') –

8

Bạn đang sử dụng phiên bản Python nào? Thiết lập sự hiểu biết appeared in 2.7.x+ and 3.x+. Nếu bạn đang sử dụng một phiên bản cũ hơn, bạn sẽ nhận được một 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 

Đó không phải là trường hợp với Python 2.7.x +/3.x +:

>>> {x for x in mylist if mylist.count(x) >= 2} 
set([20]) 
Các vấn đề liên quan