>>> rows = [['']*5]*5
>>> rows
[['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', '']]
>>> rows[0][0] = 'x'
स्वाभाविक रूप से, मैं पंक्तियों बनने के लिए उम्मीद:सूची पर गुणात्मक ऑपरेटर का उपयोग क्यों पॉइंटर्स की सूची बनाते हैं?
[['x', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', '']]
इसके बजाय, मैं:
[['x', '', '', '', ''], ['x', '', '', '', ''], ['x', '', '', '', ''], ['x', '', '', '', ''], ['x', '', '', '', '']]
ऐसा लगता है कि पंक्तियों सूची के तत्वों के संकेत दिए गए हैं वही पुरानी [ ''] * 5 सूची यह इस तरह से क्यों काम करता है और क्या यह एक पायथन सुविधा है?
एक साइड नोट के रूप में, यदि मैं सूची समझ वाक्यविन्यास के माध्यम से सूची बनाता हूं, तो मुझे "ठीक से काम करने वाला" मिलता है: 'पंक्तियां = [['' x में श्रेणी (5) के लिए श्रेणी में (5) ] ' – xyzman
यह भी" काम करता है ": पंक्तियों में वाई के लिए पंक्तियां [[''] * 5 (5)]' – xyzman