파이썬 목록의 모든 숫자에서 값을 빼시겠습니까?


84

목록이 있습니다

 a = [49, 51, 53, 56]

목록의 각 정수 값에서 13을 어떻게 빼나요?

답변:


146

A의 지능형리스트 :

a = [x - 13 for x in a]

2
def minus13(a):위에 줄 을 놓고 한 단계 들여 쓰기합니다.
Ignacio Vazquez-Abrams

8
a[:]다시 할당하는 대신 lhs에서 왜 a? 하지 않습니다 a[:]목록의 복사본을 생성?
istruble


4
무엇을 해야 할 것은 지능형리스트에서 값이 함수에 의해 반환되어야하고, 호출자가 필요한 경우 기존의 순서를 교체하기로 결정해야한다는 것입니다.
Ignacio Vazquez-Abrams

1
@istruble : will에 직접 할당하는 것도 잘 작동합니다. 따라서 a = [x - 13 for x in a]잘 작동하고 덜 혼란 스럽습니다.
Lennart Regebro

71

숫자를 많이 사용하는 경우 NumPy를 살펴 보는 것이 좋습니다 . 숫자 배열에서 직접 모든 종류의 작업을 수행 할 수 있습니다. 예를 들면 :

>>> import numpy
>>> array = numpy.array([49, 51, 53, 56])
>>> array - 13
array([36, 38, 40, 43])

1
빠른 테스트를 수행했으며 원래 배열을 그대로 유지 한 채 새 배열을 반환합니다.
Francois

10

map () 함수를 사용할 수 있습니다 .

a = list(map(lambda x: x - 13, a))

7
@ Frost.baka Python 3에서 map은 map 객체를 반환합니다. Python 2에서는 목록을 반환합니다.
sputnikus

5

댓글의 질문으로 인해 이미 게시 된 솔루션을 명확히하기 위해

import numpy

array = numpy.array([49, 51, 53, 56])
array = array - 13

다음을 출력합니다.

배열 ([36, 38, 40, 43])


3

이것은 작동합니다 :

for i in range(len(a)):
  a[i] -= 13

4
목록 이해 솔루션은 훨씬 더 비단뱀 적입니다. 당신은 그들을 좋아할 것입니다. docs.python.org/tutorial/…
istruble

누가 내 댓글을 삭제 했나요? -나는 a의 길이를 세는 데있어 요점이 보이지 않는다. 간단한 계산을합니다.
jaycodez

2
알고리즘이 이런 식으로 표현되는 경우 인덱스 변수 ( i)가 가능한 모든 인덱스 값을 반복 하려면 개수가 필요 합니다. 이 색인 변수는 목록의 각 요소를 변경하는 데 필요합니다.
Santa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.