프로그래머스_Python_리스트 컴프리헨션 3종 비교, i for i in 리스트 if 조건 else 값

HEE·2025년 3월 20일
0
post-thumbnail

리스트 컴프리헨션 문제 종합 비교 정리

1. 프로그래머스 python 코딩테스트 입문

Level 0. 대문자와 소문자

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

1. 정답 확인

1. '구분자'.JOIN(리스트) 구문 -- 리스트가 문자일때만 가능/ 숫자이면 쓸 수 없음.

def solution(my_string):
    return ''.join([i.lower() if i.isupper() else i.upper() for i in my_string])
  • isupper() : 대문자인지 확인 (True/False)

  • islower() : 소문자인지 확인 (T/F)

  • ''.JOIN(리스트) : 따로 구분자 없이 ''이렇게 바로 리스트한걸 JOIN한다는 의미. 리스트를 하나의 문자열로!

  • (리스트) 안에 [리스트 컴프리헨션]을 넣은 구조
    -[값1 if 조건 else 값2 for i in 리스트] : [ i.lower() if i.isupper() else i.upper() for i in my_string ]

2. 사실 이 경우는 swapcase()함수를 쓰면 더 편함.

def solution(my_string):
	return my_string.swapcase()

2. 프로그래머스 python 코딩테스트 입문

Level 0. 짝수 홀수 개수

정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

2. 정답 확인

count()함수는 쓸 수 없음.

i for i in 리스트 if 조건 구문

def solution(num_list):
    return[sum(1 for i in num_list if i % 2 == 0), sum(1 for i in num_list if i % 2 == 1)]
  • count() : 리스트 안에서 특정값이 몇번 나오는지 확인하는 함수.
    ex) 2가 몇번 들어가있나.

리스트 컴프리헨션 정리 (반드시 for 문이 있어야함.)

  1. [값 for 변수 in 리스트] 기본 형식
  • [i for i in 리스트] : 리스트에서 뽑은 값을 하나씩 꺼내서(i뒤) i(i앞)형태로 리스트를 만들어라.
  • i : 변경 가능, 리스트에 i를 어떻게 추가할지 정하는 변수.
    [i *2 for i in 리스트] : 리스틍에 있는 값을 하나씩 꺼내서(i) 그 값에2를 곱한 결과 (i2)를 리스트로 만들어라.
  1. [ i(값) for i(변수) in 리스트 if 조건] 특정값만 필터링
    (앞에 있는 i)(ix2) 등으로 변경 가능.

  2. [참일때 값1 if 조건 else 거짓일때 값2 for 변수 in 리스트]
    모든값 필터링

  3. if 조건문 뒤에 또 다시 for 가 오면 틀림

  4. 리스트 컴프리헨션 [ 리스트 ] 대괄호를 사용.
    리스트 생성 , 메모리에 모든 값 저장, 즉시 사용 가능.
    cf) 제너레이터 컴프리헨션 (리스트) 소괄호 사용.
    메모리 절약 (모든 값을 저장하지 않고, 필요할때 계산)
    값이 바로 보이지 앟아서 list(), for문, next()를 사용해야함.

profile
ALL IS WELL

0개의 댓글