문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두 배한 원소를 가진 배열을 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • -10,000 ≤ numbers의 원소 ≤ 10,000
  • 1 ≤ numbers의 길이 ≤ 1,000

 

입출력 예

numbers result
[1, 2, 3, 4, 5] [2, 4, 6, 8, 10]
[1, 2, 100, -99, 1, 2, 3] [2, 4, 200, -198, 2, 4, 6]

 

내 풀이

def solution(numbers):
	return [ i * 2 for i in numbers ]

 

회고

  • 리스트 컴프리헨션은 그래도 조금 알겠다. ㅎㅎ
  •  list(map(lambda x: x * 2, numbers))  이렇게 쓸 수도 있군.
  • lambda 함수, map 함수와도 친해지자.

 

lambda

  • 이름이 없는 함수를 만들 수 있다
  •  lambda 매개변수 : 표현식 과 같이 쓴다
  • return 키워드 없이도 자동으로 결과를 return
# before
>>> def hap(x, y):
...     return x + y
... 
>>> hap(10, 20)
30


# after
>>> lambda(x, y: x + y)(10, 20)
30

 

map

  • 리스트의 요소를 지정된 함수로 처리
  •  map(함수, 리스트) 와 같이 쓴다
  • 함수와 리스트를 인자로 받아 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 뒤, list 함수를 통해 그 결과를 새로운 리스트에 담는다
    • 위의 예제에서는 정수 배열 [1, 2, 3, 4, 5]로부터 원소를 하나씩 꺼내와서 lambda 함수(x를 x*2로 변경)를 적용시킨 뒤 그 결과를 새로운 리스트에 담는 것
  • 예: 실수값을 정수로 바꾼 뒤 새로운 리스트로 저장
>>> a = [1.2, 2.5, 3.7, 4.6]
>>> a = list(map(int, a))
>>> a
[1, 2, 3, 4]

 

 

 

 

복사했습니다!