Python3 では、次のように単純な 1 行のコードを書きました。
{ 2*x for x in {1,2,3,4} }
しかし、私はこのような答えを得ています(順序が変更されました)。
{8, 2, 4, 6}
{8,2,4,6}
代わりに回答が得られるのはなぜ{2,4,6,8}
ですか?
これは、セットに順序がないためです。それらは順不同のコレクションです。
ヘルプset
:
一意の要素の順不同のコレクションを構築します。
順序を維持したい場合は、ここlist
で、tuple
またはを使用できcollections.OrderedDict
ます。
セットには決まった順序がないからです。セットのドキュメントを引用する:
セットオブジェクトは、個別のハッシュ可能なオブジェクトの順序付けられていないコレクションです。
順序が必要な場合はリストまたはタプルを使用するか、OrderedDict()
オブジェクトを使用して順序を保持する一意のキーを作成します。
from collections import OrderedDict
ordered_unique_values = list(OrderedDict.fromkeys(2*x for x in (1,2,3,4)))