답변:
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]
>>>
편집 : 이것은 제자리에 없습니다
먼저 변수에 'list'라는 단어를 사용하지 마십시오. 키워드를 숨 깁니다 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)
새 목록을 작성 한다고 생각 하십니까?
그렇게 효율적이지 않지만 독특한 방식으로 진행되었습니다. 공유하고 다른 목록을위한 추가 공간이 필요합니다.
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
는 매우 큰 배열에 대해 성능 효율적이기 때문에 항상 numpy와 같은 라이브러리로 그러한 조작을 수행해야한다는 것입니다.