2010-10-04 5 views
9

मेरा प्रश्न has been posted जैसा ही एक ही प्रश्न है, जैसा कि मुझे लगता है (मुझे लगता है), लेकिन कोड में अन्य समस्याएं थीं। मैं यह निर्धारित करने में सक्षम नहीं था कि वह मामला मेरे जैसा था या नहीं।पायथन: सूचियों की सूची में एक तत्व को प्रतिस्थापित करना (# 2)

वैसे भी, मैं किसी सूची में किसी सूची में किसी तत्व को प्रतिस्थापित करना चाहता हूं। कोड:

myNestedList = [[0,0]]*4 # [[0, 0], [0, 0], [0, 0], [0, 0]] 
myNestedList[1][1] = 5 

मैं अब उम्मीद:

[[0, 0], [0, 5], [0, 0], [0, 0]] 

लेकिन मैं मिलता है:

[[0, 5], [0, 5], [0, 5], [0, 5]] 

क्यों?

यह कमांड लाइन में दोहराया गया है। अजगर 3.1.2 (r312: 79,147, अप्रैल 15, 2010, 15:35:48) [जीसीसी 4.4.3] linux2 पर

+0

[समस्या पायथन में एन * एन * एन सूची बनाने] (के संभावित डुप्लिकेट http://stackoverflow.com/questions/188 9 080/समस्या-निर्माण-एनएनएन-सूची-इन-पायथन) – SilentGhost

उत्तर

17

आप * 4 से एक ही वस्तु के चार संदर्भ कर रहे हैं, के साथ के बजाय सूची समझ का उपयोग गिनती के लिए सीमा:

my_nested_list = [[0,0] for count in range(4)] 
my_nested_list[1][1] = 5 
print(my_nested_list) 

छोटे से अधिक वस्तुतः समस्या व्याख्या करने के लिए:

yourNestedList = [[0,0]]*4 
yourNestedList[1][1] = 5 
print('Original wrong: %s' % yourNestedList) 

my_nested_list = [[0,0] for count in range(4)] 
my_nested_list[1][1] = 5 
print('Corrected: %s' % my_nested_list) 

# your nested list is actually like this 
one_list = [0,0] 
your_nested_list = [ one_list for count in range(4) ] 
one_list[1] = 5 
print('Another way same: %s' % your_nested_list) 
+1

+1। यह पहली बार परेशान हो सकता है। स्पष्टीकरण और समाधान दोनों अच्छे हैं। –

+0

मुझे इस समस्या से खुद को मारा गया है;) –

+0

आह, शुरुआत के लिए मुश्किल। सहायता के लिए बहुत - बहुत धन्यवाद! – reek

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