2016-11-12 8 views
6

एक सूची बनाई जा सकती है n समय में एक से अधिक आइटम n टाइम्स के टपल बनाएँ:अजगर

a = [['x', 'y']]*3 # Output = [['x', 'y'], ['x', 'y'], ['x', 'y']] 

लेकिन मैं इस तरह से एक टपल बनाना चाहते लेकिन यह सूची में के रूप में इसी तरह के परिणाम नहीं लौटा रहा। मैं निम्नलिखित कर रहा हूं:

a = (('x','y'))*4 # Output = ('x', 'y', 'x', 'y', 'x', 'y', 'x', 'y') 
Expected_output = (('x', 'y'), ('x', 'y'), ('x', 'y'), ('x', 'y')) 

कोई सुझाव? धन्यवाद।

उत्तर

14

बाहरी ब्रांड्स केवल ब्रांड्स को समूहीकृत कर रहे हैं। आप बाहरी बाड़े एक टपल बनाने के लिए एक अल्पविराम जोड़ने की जरूरत:

a = (('x','y'),)*4 
print(a) 
# (('x', 'y'), ('x', 'y'), ('x', 'y'), ('x', 'y')) 

संदर्भ के लिए, यह है, जबकि, f = (x + y) कर उदाहरण के लिए एक टपल प्राप्त करने के लिए कोई मतलब नहीं होगा।


आदेश में एक सिंगलटन टपल को परिभाषित करने के लिए, एक अल्पविराम आमतौर पर की जरूरत है:

a = (5) # integer 
a = (5,) # tuple 
a = 5, # tuple, parens are not compulsory 

एक तरफ ध्यान दें पर, नेस्टेड कंटेनर के बीच आइटम डुप्लिकेट सिर्फ एक सरल mult की तुलना में अधिक की आवश्यकता होगी। ऑपरेशन। उदाहरण के लिए अपना पहला ऑपरेशन पर विचार करें:

>>> a = [['x', 'y']]*3 
>>> # modify first item 
... 
>>> a[0][0] = 'n' 
>>> a 
[['n', 'y'], ['n', 'y'], ['n', 'y']] 

अनिवार्य रूप से कोई पहला आइटम नहीं है - माता पिता सूची सिर्फ एक सूची वस्तु विभिन्न सूचकांकों भर में दोहराया गया होता है। यह tuples के लिए विशेष रूप से चिंताजनक नहीं हो सकता है क्योंकि वे अपरिवर्तनीय किसी भी तरह से हैं।

अधिक सही नुस्खा उपयोग पर विचार करें:

>>> a = [['x', 'y'] for _ in range(3)] 
>>> a[0][0] = 'n' 
>>> a 
[['n', 'y'], ['x', 'y'], ['x', 'y']] 
+0

धन्यवाद। लेकिन इस छोटे अंतर का कारण क्या है? – muazfaiz

+1

यह ब्रैकेट के रूप में उपयोग किए गए बंद ब्रेसिज़ के बीच अंतर करना है (उदाहरण के लिए '(5) => 5') और एक ट्यूपल का प्रतिनिधित्व करने के लिए। –

+1

ध्यान दें कि अंतिम परिणाम एक टुपल है जिसमें एक ही टुपल ('आईडी (ए [0]) == आईडी (ए [1])' 'सत्य' का मूल्यांकन होता है) के चार संदर्भ होते हैं। टुपल्स अपरिवर्तनीय हैं, इसलिए इससे कोई फर्क नहीं पड़ता, लेकिन यदि आपके पास अपने टुपल के अंदर एक ही सूची थी और संशोधित एक, तो परिणाम आश्चर्यचकित हो सकते थे। –