13

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

ありがとうございました。

4

2 に答える 2

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

set明示的なとを使用して、python2.6 で結果を得ることができますgenerator

>>> set(x for x in mylist if mylist.count(x) >= 2)
set([20])
于 2012-07-15T00:35:50.210 に答える
8

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])
于 2012-07-15T00:32:59.983 に答える