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

हां, सूची समझ मूल पुनरावृत्त (अगर कोई है) के आदेश को सुरक्षित रखती है। यदि मूल पुनरावर्तनीय आदेश दिया गया है (सूची, tuple, फ़ाइल, आदि), तो वह परिणाम है जो आप परिणाम में प्राप्त करेंगे। यदि आपका पुनरावर्तनीय अनियंत्रित (सेट, dict, आदि) है, तो वस्तुओं के आदेश के बारे में कोई गारंटी नहीं है।

+1

सेट और डिक्ट्स के साथ, मेरा मानना ​​है कि एक गारंटी है कि डेटा नहीं बदलेगा तो ऑर्डर नहीं बदलेगा। जैसे एक सेट 'दिया गया है, निम्नलिखित हमेशा सत्य होंगे: '[x में x के लिए x] == [x में x के लिए x]'। –

+0

क्या इसका यह भी अर्थ है कि समझ का निष्पादन उस क्रम में है? अर्थात। [x में x के लिए x अगर x (x)] पी (x) को एस के क्रम में कॉल कर सकता है (या तो केवल सैद्धांतिक रूप से) जो कि एक अलग क्रम में हो और परिणाम किसी भी तरह से "क्रमबद्ध" को बाद में सही क्रम में वापस लाया जाए ? –

3

हां, एक सूची एक अनुक्रम है। अनुक्रम आदेश महत्वपूर्ण है।

संबंधित मुद्दे