2009-08-17 6 views
26

リストの理解を使用する場合、新しいリストの順序はどのように保証されますか?不自然な例として、リスト内包の定義によって保証され、次の動作です:リストの理解による結果の順序は保証されていますか?

>> a = [x for x in [1,2,3]] 
>> a 
[1, 2, 3] 

は同様に、保証以下の等式である。具体的には、私が興味発注

>> lroot = [1, 2, 3] 
>> la = [x for x in lroot] 
>> lb = [] 
>> for x in lroot: 
    lb.append(x) 
>> lb == la 
True 

ですここに。

+2

はい、保証されています。それはシーケンスです。 – hughdbrown

答えて

28

はい、リストの理解度によって、元の繰り返し可能な順番(存在する場合)が維持されます。 オリジナルのiterableが(list、tuple、fileなど)順序付けされている場合は、その結果で取得する順序です。あなたのイテレートが順序付けされていない(set、dictなど)場合、アイテムの順序についての保証はありません。

+1

セットとディクテーションでは、データが変更されないと注文が変更されないという保証があると私は信じています。例えば's'を指定すると、次のようになります:' 'x in s in == [x in s in] '。 –

+0

これはまた、理解の実行がその順序にある​​ことを意味しますか?私。別の順序で結果が何らかの形で「正しい順序で」ソートされた後、p(x)がp(xの場合はxの場合はp)をsの順に呼び出すか(理論的にのみであっても) ? –

3

はい、リストはシーケンスです。シーケンスの順序は重要です。

関連する問題