1

Python3 では、次のように単純な 1 行のコードを書きました。

{ 2*x  for x in {1,2,3,4} } 

しかし、私はこのような答えを得ています(順序が変更されました)。

{8, 2, 4, 6}

{8,2,4,6}代わりに回答が得られるのはなぜ{2,4,6,8}ですか?

4

2 に答える 2

8

これは、セットに順序がないためです。それらは順不同のコレクションです。

ヘルプset:

一意の要素の順不同のコレクションを構築します。

順序を維持したい場合は、ここlistで、tupleまたはを使用できcollections.OrderedDictます。

于 2013-07-03T11:05:13.747 に答える
5

セットには決まった順序がないからです。セットのドキュメントを引用する:

セットオブジェクトは、個別のハッシュ可能なオブジェクトの順序付けられていないコレクションです。

順序が必要な場合はリストまたはタプルを使用するか、OrderedDict()オブジェクトを使用して順序を保持する一意のキーを作成します。

from collections import OrderedDict

ordered_unique_values = list(OrderedDict.fromkeys(2*x for x in (1,2,3,4)))
于 2013-07-03T11:05:33.030 に答える