2017-04-04 10 views
0

は、リテラルを意味しています。つまり、[]がより速いことを意味します。list()を使用して「型キャスティング」を呼び出すと、関数が呼び出されます。リストをセットにするときのリストとセットの違い

しかし、私は最近、単なる速度以上の違いがあることを発見しました。私はキーがintである辞書を持っています。値は、私が作ったオブジェクトです。オブジェクトには、大学名に対応する文字列があります。 (!誇らしげそして、できればPythonically):

[set([entry[1].school for entry in entries.items()])]

をしかし、これは、単一の要素のリストを作成し、その要素が設定され

私はユニークな大学名を望んでいた、と私は書きました。

文字列-私が最初に予想していたのリストを返します

list(set([entry[1].school for entry in entries.items()]))

:これはとは異なります。

誰かが両方の行の間で正確に何が起こっているのか説明できますか? [x]は、単一の部材で新しいリストを作成している間

+0

私はこの質問を以前に聞いたことがありますが、私は疲れていて、それを探している気がしません。私はあなたがGoogleの検索でそれを見つけると確信しています。 – zondo

+0

まあ、質問は「[]とlist()の違いは何だと思ったのですが、関数呼び出しかリテラルの区別かと思っていました。私はセットがそれと関係があると思ったので、私はその時点でどのように質問するか分からなかった。 –

+1

http://stackoverflow.com/q/23703109/5827958も同様です。これはもう少し複雑ですが、必要な答えが必要です。 – zondo

答えて

4

list(x)は(x

>>> list('test') 
['t', 'e', 's', 't'] 
>>> ['test'] 
['test'] 

リスト

内側の式を有する list comprehensionsための特別な構文があり、 listxに変換されます
squares = [x**2 for x in range(10)] 

しかし、実際にはキャストしません。


セット変換list(set(...))に関しては、これは新しいリストを作成しますがメンバーがセットを反復処理によって取得されます。

>>> set('test') 
set(['s', 'e', 't']) # a test set 
>>> list(set('test')) 
['s', 'e', 't'] # create a list with members from set 
>>> [set('test')] 
[set(['s', 'e', 't'])] # create a list with a single member (which is the test set itself) 
+0

[回答]に記載されているように、不明確、過度に広範な、誤植、再現性のない、または重複した質問にはお答えください。Write-my-codeリクエストと手間のかからない質問は[so]の話題にはならず、プロのコーディング/個人指導サービスに適しています。良い質問は[質問する]、[mcve]を含める、研究努力をして、将来の訪問者に役立つ可能性を秘めています。不適切な質問に答えることで、ナビゲートするのをより困難にし、さらにそのような質問を奨励することで、時間と専門知識をボランティアする他のユーザーを追い払うことができます。 – TigerhawkT3

関連する問題