🔥알림🔥
① 테디노트 유튜브 -
구경하러 가기!
② LangChain 한국어 튜토리얼
바로가기 👀
③ 랭체인 노트 무료 전자책(wikidocs)
바로가기 🙌
④ RAG 비법노트 LangChain 강의오픈
바로가기 🙌
⑤ 서울대 PyTorch 딥러닝 강의
바로가기 🙌
#10-파이썬(Python) 내장함수-map, zip, filter, enumerate
본 포스팅은 파이썬(Python) 코딩 입문자를 위한 튜토리얼 시리즈 연재 중 일부입니다. 이번 튜토리얼에서는 파이썬의 내장함수(built-in function) 중 map()
, zip()
, filter()
, enumerate()
를 다룹니다.
코드
내장함수(built-in function)
- 파이썬에는 이미 만들어진 내장함수가 존재합니다.
- 이미 사용하고 있는
print()
,type()
이 파이썬의 대표적인 내장함수입니다. - 이 밖에도 유용한 몇 가지 내장함수를 알아 보겠습니다.
map
- 문법: map(function, iterable)
- map은 함수(f)와 순회 가능한(iterable) 자료형을 입력으로 받습니다.
- map은 입력받은 자료형의 각 요소를 함수(function)가 수행한 결과를 묶어서 돌려줍니다.
sample_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
map만 실행시 요소의 내용이 바로 출력되지 않습니다.
map(str, sample_data)
<map at 0x7f04681b9cc0>
list()로 타입 변환하여 요소를 출력합니다.
list(map(str, sample_data))
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
map에 lambda 함수 적용
result = map(lambda x: x*2, sample_data)
list(result)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
map에 다중 인수를 지정
sample_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sample_data_2 = [0, 1, 2, 3, 5, 8, 13, 21, 34, 55]
list(map(lambda x, y: x+y, sample_data, sample_data_2))
[1, 3, 5, 7, 10, 14, 20, 29, 43, 65]
list의 size가 다른 경우, 작은 size에 맞춰 생성
sample_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sample_data_2 = [1, 1, 1, 10, 100]
list(map(lambda x, y: x+y, sample_data, sample_data_2))
[2, 3, 4, 14, 105]
fIlter
- 문법: fIlter(function, iterable)
filter
내장함수는 값을 filter 할 때 사용합니다.- True인 값을 가지는 요소만 filter 합니다.
sample_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
lambda 함수를 지정한 경우
result = filter(lambda x: True if (x % 2 == 1) else False, sample_data)
list(result)
[1, 3, 5, 7, 9]
함수를 선언하여 함수명으로 지정한 경우
def three_multiple(x):
if x % 3 == 0:
return True
else:
return False
# 함수의 이름만 입력
result = filter(three_multiple, sample_data)
list(result)
[3, 6, 9]
zip
- 문법: zip(*iterable)
- 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 합니다.
sample_data1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sample_data2 = [0, 1, 2, 3, 5, 8, 13, 21, 34, 55]
sample_data3 = [5, 6, 7]
sample_data1
, sample_data2
을 zip으로 묶어준 경우
result = zip(sample_data1, sample_data2)
list(result)
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 5), (6, 8), (7, 13), (8, 21), (9, 34), (10, 55)]
sample_data1
, sample_data2
, sample_data3
을 zip으로 묶어준 경우
- 작은 size를 가지는 리스트(list)에 맞춰 생성합니다.
list(zip(sample_data1, sample_data2, sample_data3))
[(1, 0, 5), (2, 1, 6), (3, 2, 7)]
zip의 응용
number = [1, 2, 3, 4]
name = ['홍길동','김철수','John','Paul']
number_name = list(zip(number,name))
number_name
[(1, '홍길동'), (2, '김철수'), (3, 'John'), (4, 'Paul')]
zip을 활용한 dict 만들기
number = [1, 2, 3, 4]
name = ['홍길동','김철수','John','Paul']
dic = {}
for number, name in zip(number,name):
dic[number] = name
dic
{1: '홍길동', 2: '김철수', 3: 'John', 4: 'Paul'}
enumerate
- [문법]: enumerate(iterable, start=0)
- 순서가 있는 자료형을 입력 받아 index를 포함하는 객체로 return 합니다.
일반 range()
함수를 사용한 경우
for value in range(1, 10, 2):
print(value)
1 3 5 7 9
enumerate()
함수를 사용하여 index를 return 받은 경우
for idx, value in enumerate(range(1, 10, 2)):
print(f'index: {idx}, value: {value}')
index: 0, value: 1 index: 1, value: 3 index: 2, value: 5 index: 3, value: 7 index: 4, value: 9
댓글남기기