목록의 각 요소에 정수를 추가하는 방법은 무엇입니까?
있다면,list=[1,2,3]
그리고 추가하고 싶습니다.1
출력을 얻기 위해 각 요소에[2,3,4]
내가 그걸 어떻게 하겠어요?
저는 for 루프를 사용할 것으로 예상하지만 정확한 방법은 모르겠습니다.
new_list = [x+1 for x in my_list]
목록 이해에 대한 다른 답변은 단순 추가에 가장 적합할 수 있지만, 모든 요소에 적용해야 하는 더 복잡한 기능이 있다면 지도가 적합할 수 있습니다.
예를 들어 다음과 같습니다.
>>> map(lambda x:x+1, [1,2,3])
[2,3,4]
>>> mylist = [1,2,3]
>>> [x+1 for x in mylist]
[2, 3, 4]
>>>
list-comprehensions 파이썬.
만약 당신이 numpy를 사용하고 싶다면 다음과 같은 다른 방법이 있습니다.
import numpy as np
list1 = [1,2,3]
list1 = list(np.asarray(list1) + 1)
편집: 제자리에 있지 않습니다.
먼저 변수에 'list'라는 단어를 사용하지 마십시오.키워드를 가립니다.list
.
가장 좋은 방법은 스플라이싱을 사용하여 제자리에서 작업을 수행하는 것입니다.[:]
스플라이스를 나타냅니다.
>>> _list=[1,2,3]
>>> _list[:]=[i+1 for i in _list]
>>> _list
[2, 3, 4]
>>> [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]
import numpy as np
np.add([1, 2, 3], 1).tolist()
이는
[2, 3, 4]
기본 제공되는 솔루션만 사용하고 사용하지 않는 솔루션을 찾는 사람이 있을 수 있습니다.lambda
s:
from functools import partial
from operator import add
my_list = range(1, 4) # list(my_list) #=> [1, 2, 3]
my_list_plus_one = list(map(partial(add, 1), my_list) #=> [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]
list = [1,2,3,4,5]
for index in range(len(list)):
list[index] = list[index] +1
print(list)
위의 많은 답변들은 매우 좋습니다.저는 또한 그 일을 할 수 있는 이상한 대답들을 보았습니다.또한, 마지막으로 관찰된 답은 정상적인 루프를 통해서였습니다.대답을 하려는 이 의지는 저를 다음과 같이 이끌었습니다.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와 같은 라이브러리를 사용하면 매우 큰 어레이에서 성능 효율적이기 때문에 항상 이러한 조작을 수행해야 한다는 것입니다.
언급URL : https://stackoverflow.com/questions/9304408/how-to-add-an-integer-to-each-element-in-a-list
'programing' 카테고리의 다른 글
Firebase web user.reauthenticate에 필요한 "credential" 개체를 만드는 방법자격 증명() 메서드를 사용하시겠습니까? (0) | 2023.06.05 |
---|---|
배열 값으로 열을 순차적으로 업데이트 (0) | 2023.06.05 |
NodeJS - "소켓 전화 끊기"가 실제로 무엇을 의미합니까? (0) | 2023.06.05 |
선 끝에 레이블 표시 (0) | 2023.06.05 |
세 개의 열 데이터 프레임을 행렬("긴"에서 "넓은" 형식)로 재구성 (0) | 2023.06.05 |