python comprehension

Nam Eun-Ji·2021년 1월 19일
0

list comprehension

  • for
nums = [1,2,3,4,5,6,7,8,9,10]
multi_nums = [n*2 for n in nums]
# [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
  • for + if
arr = [n for n in range(10) if n % 2 == 0]
# [0, 2, 4, 6, 8]
  • for + if/else
arr = [n*2 if n % 2 == 0 else n for n in range(10)]
# [0, 1, 4, 3, 8, 5, 12, 7, 16, 9]
  • for + if/elif/else
arr = [(n, '2의배수') if n%2 == 0 else (n,'3의배수') if n%3 == 0 else n for n in range(1,10)]
# [1, (2, '2의배수'), (3, '3의배수'), (4, '2의배수'), 5, (6, '2의배수'), 7, (8, '2의배수'), (9, '3의배수')]
  • for + for
matrix = [[1,2,3],[4,5,6],[7,8,9]]
nums = [x for arr in matrix for x in arr]
# [1, 2, 3, 4, 5, 6, 7, 8, 9]



dict comprehension

  • for
    { key:value for 원소 in 반복가능한 객체 }
nums = [1, 2, 3]
a = {key: value for key, value in enumerate(nums)}
# {0: 1, 1: 2, 2: 3}
  • for + if
person = {'name': 'lizzy', 'sex': 'female', 'hobby': None}
lizzy = {key:value for key, value in person.items() if value is not None}
# {'name': 'lizzy', 'sex': 'female'}



set comprehension

  • for
nums = [1,1,2,2,3,3]
a = {x for x in nums}
# {1, 2, 3}
  • for + if
nums = [1,1,2,2,3,3]
a = {x for x in nums if x % 2 !=0}
# {1, 3}


전체적으로 dict나 set 모두 list comprehension과 패턴이 같아 따로 기재하지 않았다.

profile
한 줄 소개가 자연스러워지는 그날까지

0개의 댓글