जवाबों:
new_list = [x+1 for x in my_list]
lst = [1, 2, 3]; e = lst[0]; e += 1
। e
यह कहां से आया है, इसके बारे में कोई जानकारी नहीं है, यह सिर्फ एक चर है जिसके लिए एक सूची का एक तत्व सौंपा गया है। इसे कुछ और बताने के बाद, सूची lst
नहीं बदलेगी।
new_list = (x+1 for x in my_list)
>>> mylist = [1,2,3]
>>> [x+1 for x in mylist]
[2, 3, 4]
>>>
सूची बोध पर अन्य उत्तर संभवतः सरल जोड़ के लिए सबसे अच्छी शर्त है, लेकिन यदि आपके पास एक अधिक जटिल कार्य है जिसे आपको सभी तत्वों पर लागू करने की आवश्यकता है, तो मानचित्र एक अच्छा फिट हो सकता है।
आपके उदाहरण में यह होगा:
>>> map(lambda x:x+1, [1,2,3])
[2,3,4]
map(1 .__add__, ...)
काम भी करता है। ध्यान दें कि आपको पार्सर को रोकने के लिए एक जगह की आवश्यकता है 1
और .
यह सोचने के लिए कि यह एक नाव है
संपादित करें: यह इन-प्लेस नहीं है
सबसे पहले अपने वेरिएबल के लिए 'लिस्ट' शब्द का इस्तेमाल न करें। यह कीवर्ड को छाया देता है list
।
इसका सबसे अच्छा तरीका यह है कि इसे स्प्लिसिंग का उपयोग करके, [:]
एक ब्याह को दर्शाता है:
>>> _list=[1,2,3]
>>> _list[:]=[i+1 for i in _list]
>>> _list
[2, 3, 4]
_list[:]=(i+1 for i in _list)
।
_list[:]=(i+1 for i in _list)
है कि नई सूची क्यों बनाई गई है?
>>> [x.__add__(1) for x in [1, 3, 5]]
3: [2, 4, 6]
यहाँ मेरा उद्देश्य यह है कि सूची में मौजूद वस्तु एक पूर्णांक है जो विभिन्न अंतर्निहित कार्यों का समर्थन करता है।
अजगर 2+:
>>> mylist = [1,2,3]
>>> map(lambda x: x + 1, mylist)
[2, 3, 4]
अजगर 3+:
>>> mylist = [1,2,3]
>>> list(map(lambda x: x + 1, mylist))
[2, 3, 4]
इतना कुशल नहीं है, लेकिन यह करने का अनूठा तरीका है। इसलिए इसे साझा करना। और हाँ इसके लिए एक और सूची के लिए अतिरिक्त स्थान की आवश्यकता होती है।
from operator import add
test_list1 = [4, 5, 6, 2, 10]
test_list2 = [1] * len(test_list1)
res_list = list(map(add, test_list1, test_list2))
print(test_list1)
print(test_list2)
print(res_list)
#### Output ####
[4, 5, 6, 2, 10]
[1, 1, 1, 1, 1]
[5, 6, 7, 3, 11]
from operator import add
ऊपर दिए गए कई उत्तर बहुत अच्छे हैं। मैंने कुछ अजीब जवाब भी देखे हैं जो काम करेंगे। साथ ही, देखा गया अंतिम उत्तर एक सामान्य लूप के माध्यम से था। जवाब देने की यह इच्छा मुझे आगे बढ़ाती हैitertools
औरnumpy
, जो एक ही काम को एक अलग तरीके से करेंगे।
यहां मैं काम करने के लिए अलग-अलग तरीके प्रस्तुत करता हूं, ऊपर वर्णित नहीं।
import operator
import itertools
x = [3, 5, 6, 7]
integer = 89
"""
Want more vairaint can also use zip_longest from itertools instead just zip
"""
#lazy eval
a = itertools.starmap(operator.add, zip(x, [89] * len(x))) # this is not subscriptable but iterable
print(a)
for i in a:
print(i, end = ",")
# prepared list
a = list(itertools.starmap(operator.add, zip(x, [89] * len(x)))) # this returns list
print(a)
# With numpy (before this, install numpy if not present with `pip install numpy`)
import numpy
res = numpy.ones(len(x), dtype=int) * integer + x # it returns numpy array
res = numpy.array(x) + integer # you can also use this, infact there are many ways to play around
print(res)
print(res.shape) # prints structure of array, i.e. shape
# if you specifically want a list, then use tolist
res_list = res.tolist()
print(res_list)
उत्पादन
>>> <itertools.starmap object at 0x0000028793490AF0> # output by lazy val
>>> 92,94,95,96, # output of iterating above starmap object
>>> [92, 94, 95, 96] # output obtained by casting to list
>>> __
>>> # |\ | | | |\/| |__| \ /
>>> # | \| |__| | | | |
>>> [92 94 95 96] # this is numpy.ndarray object
>>> (4,) # shape of array
>>> [92, 94, 95, 96] # this is a list object (doesn't have a shape)
मेरे उपयोग को उजागर करने का मेरा एकमात्र कारण यह numpy
है कि किसी को हमेशा पुस्तकालयों के साथ इस तरह के जोड़-तोड़ करना चाहिए जैसे कि खसखस के साथ क्योंकि यह बहुत ही महत्वपूर्ण सरणियों के लिए प्रदर्शन कुशल है।