파이썬 Comprehension

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

20. 파이썬 Comprehension

  • 다른 Sequence로 부터 새로운 Sequence (Iterable Object)를 만들 수 있는 기능

20.1. list comprehension

사용법

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

  • 입력 Sequence는 Iteration이 가능한 데이타 Sequence 혹은 컬렉션
  • [if 조건식] 에서 [ ] 은 리스트 괄호가 아니라, 옵션이라는 뜻, 즉 조건이 있을때만 넣으면 된다는 뜻임
  • 용어를 꼭 알아두자. 용법을 잊었을 때 용어가 익숙치 않아 용법 검색이 어려울 수 있음
In [72]:
# 예: 종류가 다른 데이터에서 정수 리스트만 가져오기
dataset = [4, True, 'Dave', 2.1, 3]
In [73]:
int_data = [num for num in dataset if type(num)==int]
In [74]:
int_data
Out[74]:
[4, 3]
In [75]:
print (type(int_data))
<class 'list'>
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [76]:
# 출력 표현식을 num * num 으로 바꿔볼까요?
int_square_data = [num * num for num in dataset if type(num)==int]
In [77]:
int_square_data
Out[77]:
[16, 9]
초간단 연습1
1. List comprehension을 사용해서 1~100까지의 숫자 출력하기
2. List comprehension을 사용해서 1~100까지의 숫자 중 3으로 나누어 떨어지는 수만 출력하기
3. List comprehension을 사용해서 1~100까지의 숫자 중 3 또는 7로 나누어 떨어지지 않는 수만 출력하기

20.2. Set comprehension

사용법

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

  • 입력 Sequence로부터 조건에 맞는 새로운 Set 컬렉션을 리턴
  • [if 조건식] 에서 [ ] 은 리스트 괄호가 아니라, 옵션이라는 뜻, 즉 조건이 있을때만 넣으면 된다는 뜻임
  • 파이썬3에서 추가됨
In [ ]:
int_data = [1, 1, 2, 3, 3, 4]
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [80]:
# 예: num * num 의 set 컬렉션 만들기
square_data_set = {num * num for num in int_data}
In [81]:
square_data_set
Out[81]:
{9, 16}
In [86]:
# 예: num * num 의 set 컬렉션 만들기 (조건 붙여보기)
square_data_set = {num * num for num in int_data if num > 3}
In [87]:
square_data_set
Out[87]:
{16}

20.3. Dictionary comprehension

사용법

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

  • 입력 Sequence로부터 조건에 맞는 새로운 Set 컬렉션을 리턴
  • [if 조건식] 에서 [ ] 은 리스트 괄호가 아니라, 옵션이라는 뜻, 즉 조건이 있을때만 넣으면 된다는 뜻임
  • 파이썬3에서 추가됨
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [70]:
id_name = {1: 'Dave', 2: 'David', 3: 'Anthony'}
In [71]:
id_name.items()
Out[71]:
dict_items([(1, 'Dave'), (2, 'David'), (3, 'Anthony')])
In [61]:
# 아이디가 1이상인 데이터를 이름:아이디 형식으로 새로운 set 만들기
name_id = {val:key for key,val in id_name.items() if key > 1}
In [62]:
name_id
Out[62]:
{'Anthony': 3, 'David': 2}
In [63]:
# 아이디를 10단위로 한번에 바꾸기
name_id = {key * 10:val for key,val in id_name.items()}
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [64]:
name_id
Out[64]:
{10: 'Dave', 20: 'David', 30: 'Anthony'}