नहीं यह एक की बहुत बड़ी प्रशंसक हैं, लेकिन आप यह कोशिश कर सकते हैं (हालांकि मुझे लगता है कि ऊपर के सभी और अधिक कर रहे हैं संक्षिप्त और आसान को पढ़ने के लिए): संदिग्ध पठनीयता के अलावा
In [22]: from operator import setitem
In [23]: mylist = [0, 0, 0, 0, 0]
In [24]: indeces_to_replace = [0, 1, 3]
In [25]: _ = map(lambda x: setitem(mylist, x, 100), indeces_to_replace)
In [26]: mylist
Out[26]: [100, 100, 0, 100, 0]
और एक आयात के लिए की जरूरत है, @abarnert कुछ अतिरिक्त मुद्दों ने बताया, अर्थात् है कि 012,369,अभी भी एक अनावश्यक सूची बनाता है (जिसे _
से हटा दिया गया है लेकिन फिर भी बनाया गया है) और यह पाइथन 3 में काम नहीं करेगा क्योंकि map
returns an iterator पायथन 3.x में। आप पाइथन 2 से पायथन 3.x में map
के व्यवहार को अनुकरण करने के लिए six मॉड्यूल का उपयोग कर सकते हैं।एक्स, और collections.deque
(फिर से @abarnert द्वारा सुझाए गए अनुसार) के संयोजन में, आप स्मृति में अतिरिक्त सूची बनाये बिना एक ही आउटपुट प्राप्त कर सकते हैं क्योंकि deque
जिसमें अधिकतम 0
आइटम शामिल हो सकते हैं, यह map
इटेटर (ध्यान दें कि six
के साथ, map
itertools.imap
का उपयोग कर अनुकरण किया गया है)।
फिर, बिल्कुल नहीं कभी भी इस का उपयोग करने की आवश्यकता है -/नीचे से ऊपर हर समाधान :)
In [1]: from collections import deque
In [2]: from six.moves import map
In [3]: from operator import setitem
In [4]: mylist = [0, 0, 0, 0, 0]
In [5]: indeces_to_replace = [0, 1, 3]
In [6]: deque(map(lambda x: setitem(mylist, x, 100), indeces_to_replace), maxlen=0)
Out[6]: deque([], maxlen=0)
In [7]: mylist
Out[7]: [100, 100, 0, 100, 0]
यह कैसे के बारे में? मेरी सूची [: 2], मेरी सूची [3] = [ए] * 2, ए –