2012-07-15 8 views
14

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

作品を私のためv2.7.2で、私はセット '取得( [20]) ' – Levon

+1

「動作しない」とは何ですか? – kindall

+1

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

答えて

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

古いバージョンを使用している場合は、SyntaxError: invalid syntaxを取得します明示的なset、およびgeneratorを使用してのpython2.6で結果を達成:

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

2.7の新機能:セットリテラル( '{1,2,3,4,5} == set([1、2、3、4、5])') –

8

あなたはどのバージョンのPythonを使用していますか?包括を設定するappeared in 2.7.x+ and 3.x+。 Pythonの2.7.35の場合ではありません

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

+/3.xの+:あなたができる

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