2017-09-13 3 views
-3
a = [3.2,1,3,1,4,1,3423] 
s = sorted(set([aa for aa in a])) 
print(type(s)) 
output - class 'list' 

誰かがこれを説明できますか?なぜ 'set'の代わりに 'list'を表示するのですか。ソートされたメソッドなしでプログラムを実行すると、クラス 'setが表示されます。python 3でset関数を使用すると、なぜ 'list'型が表示されますか?

+1

'sorted'はソートされた** list **を作成するためです。セットは方法によって順序がありません。 –

+2

'sorted'はあなたがそれを与えるコレクションからリストを作成します。これを見るには、[そのドキュメントを読む](https://docs.python.org/3/library/functions.html#sorted)があります。 –

+0

正式な文書をチェックするだけの良い習慣があります。 https://docs.python.org/3.6/library/functions.html#sorted – pvg

答えて

0

sorted(..)は、リストを構成する関数である。それは "ソース"のタイプを考慮せず、iterableを入力として受け取り、その入力を持つリストを構築します。それともとしてはdocumented次のとおりです。

リターンのiterable中のアイテムから新しいソートされたリストsorted(..)以来

は、Python自体によって実装されており、クラス自体のいくつかのプロトコルを利用していない、それもすべてのコレクション型のためにソートされているコレクション型を構築することは不可能であろう。

はさらにPythonでset sが unoderedです:あなたは要素を持つ集合を構築する場合、その順序は、挿入順序と同じになるという保証はありません、でもあなたは更新時に順序が同じであることセット。

関連する問題