[PYTHON] Comprehension

Minjeong Bak·2021년 10월 26일
0

PYTHON/Django

목록 보기
8/14

List Comprehension

[식 for 원소 in 리스트 if 문]

  • 적용 전
a = []
for i in range(5):
    a.append(i)
# a = [0, 1, 2, 3, 4]
  • 적용 후
a = [i for i in range(4)]
# [0, 1, 2, 3, 4]
  • 단일 if문
[i for i in range(5) if i % 2 == 0]
# [0, 2, 4]
[i for i in range(5) if i % 2 == 1]
# [1, 3]
  • if else문

    짝수는 모두 리스트에 포함시키고 홀수일 경우에는 None을 리스트에 포함

[i if i % 2 == 0 else None for i in range(5)]
# [0, None, 2, None, 4]
  • 중첩 for문

    1~5 사이의 숫자에 각각 7~9 숫자를 곱한 결과

[i*j for i in range(1,6) for j in range(7,10)]
# [7, 8, 9, 14, 16, 18, 21, 24, 27, 28, 32, 36, 35, 40, 45]

Set Comprehension

{출력표현식 for 요소 in 입력Sequence [if 조건식]}

  • 입력 Sequence로부터 지정된 표현식에 따라 새로운 Set 컬렉션을 빌드하는 것
  • List Comprehension과 거의 비슷하지만, 결과가 Set {...}으로 리턴된다.
  • Sequence (oldlist)는 중복된 숫자를 갖는 리스트
  • Set은 중복을 허용하지 않으므로 중복된 데이타는 자연스럽게 제거
  • Set은 요소의 순서를 보장하지 않으므로, 순서가 랜덤하게 바뀐 결과를 출력
oldlist = [1, 1, 2, 3, 3, 4]
 
newlist = [i*i for i in oldlist]
# [1, 1, 4, 9, 9, 16]

newlist = {i*i for i in oldlist}
# {16, 1, 4, 9}

Dictionary Comprehension

{Key:Value for 요소 in 입력Sequence [if 조건식]}

  • 입력 Sequence로부터 지정된 표현식에 따라 새로운 Dictionary 컬렉션을 빌드하는 것
id_name = {1: '박진수', 2: '강만진', 3: '홍수정'}
 
name_id = {val:key for key,val in id_name.items()}
 
print(name_id)
 
# 출력 : {'박진수': 1, '강만진': 2, '홍수정': 3}

0개의 댓글