CODE/Python

[Programmers] for 문과 if문을 한번에

728x90

문제 설명

정수를 담은 리스트 mylist를 입력받아, 이 리스트의 원소 중 짝수인 값만을 제곱해 담은 새 리스트를 리턴하는 solution함수를 완성해주세요. 예를 들어, [3, 2, 6, 7]이 주어진 경우3은 홀수이므로 무시합니다. 2는 짝수이므로 제곱합니다.6은 짝수이므로 제곱합니다.7은 홀수이므로 무시합니다. 따라서 2의 제곱과 6의 제곱을 담은 리스트인 [4, 36]을 리턴해야합니다. 제한 조건mylist는 길이가 100이하인 배열입니다.mylist의 원소는 1이상 100 이하인 정수입니다.

 

Solution 

  • list comprehension 
def solution(mylist):
    answer = []
    answer = [i**2 for i in mylist if i % 2 == 0]
    return answer
테스트 1 〉통과 (0.00ms, 10.3MB)
테스트 2 〉통과 (0.00ms, 10.1MB)
테스트 3 〉통과 (0.01ms, 10.2MB)

 

Result 

  • Runtime: 1.76ms 
  • 다른 방법과 비교 
# for문과 if문을 각각 작성했을때, 실행시간 2.31ms
mylist = [3, 2, 6, 7]
answer = []
for number in mylist:
    if number % 2 == 0:
        answer.append(number**2) # 들여쓰기를 두 번 함
# list comprehension일 때, 실행시간: 1.76ms
mylist = [3, 2, 6, 7]
answer = [number**2 for number in mylist if number % 2 == 0]

 

list comprehension: https://mingrammer.com/introduce-comprehension-of-python/
728x90