정수를 담은 리스트 mylist를 입력받아, 이 리스트의 원소 중 짝수인 값만을 제곱해 담은 새 리스트를 리턴하는 solution함수를 완성해주세요. 예를 들어, [3, 2, 6, 7]이 주어진 경우
- 3은 홀수이므로 무시합니다.
- 2는 짝수이므로 제곱합니다.
- 6은 짝수이므로 제곱합니다.
- 7은 홀수이므로 무시합니다.
따라서 2의 제곱과 6의 제곱을 담은 리스트인 [4, 36]을 리턴해야합니다.
제한 조건
- mylist는 길이가 100이하인 배열입니다.
- mylist의 원소는 1이상 100 이하인 정수입니다.
제출한 정답
def solution(mylist):
filter_list = list(filter(lambda x: x%2 == 0, mylist))
answer = list(map(lambda x: x**2, filter_list))
return answer
예측 오답
def solution(mylist):
answer = []
for number in mylist:
if number % 2 == 0:
answer.append(number**2)
return answer
풀이 정답
def solution(mylist):
answer = [number**2 for number in mylist if number % 2 == 0]
return answer
뭔가 방법이 있었던 기억이 있는데 기억이 나지 않아 filter 후에 map을 사용해 보았다.
List comprehension의 [val for val in iterable (if filter)] 괄호 안의 for 문에서 if 문을 사용하면 조건문으로 필터링 할 수 있다.
If 문을 여러개 사용할 수도 있는데 이떄는 if 문을 연속으로 사용해주면 된다.
[val for val in Iterable if val % 3 == 0 if val % 5 == 0] # if val % 3 == 0 and val % 5 == 0 와 같은 동작이 이루어진다.
'Python' 카테고리의 다른 글
백준. 설탕배달 (Dynamic Programming) (0) | 2022.08.18 |
---|---|
파트7. flag OR else (0) | 2022.07.22 |
파트6. 가장 많이 등장하는 알파벳 찾기 (0) | 2022.07.22 |
파트6. 순열과 조합 (0) | 2022.07.21 |
파트6. 2차원 리스트를 1차원 리스트로 만들기 (0) | 2022.07.14 |