공부/Python

[Python 기초] 기타 함수 (enumerate, zip, lambda, map)

tea_pixel 2024. 8. 26. 12:00
반응형

12. 기타 함수

데이터 처리에 유용한 enumerate, zip, lambda, map에 대해 다룸

 

enumerate

 

반복 가능한 객체의 인덱스와 원소에 함께 접근할 수 있는 함수
tuple(인덱스, 원소)의 형태로 객체를 반환
보통 리스트 구조의 데이터일 때 활용한다.
반복문 사용 시 몇 번째 반복문인지 확인이 필요할 때도 사용한다.

 

# enumerate 예시

list1 = ['a','b','c']
for x in enumerate(list1):
    print(x)

# 결과 :(0, 'a')
#	(1, 'b')
#	(2, 'c')

 

list 구조를 받아서, 인덱싱 하여 tuple 구조로 반환함.

 

# enumerate 활용

# enumerate는 for문에서 몇 번째 원소인지 확인할 수 있지만,
# enumerate 명령어를 활용하여 프로그래밍을 할 수 도 있다.
# 예시 : 병원에 방문한 순서대로 넘버링

# enumerate 없이 for문 사용하는 경우
people = ['김씨', '최씨', '이씨']
i = 1
for j in people:
    print('번호 : {}, 성 : {}'.format(i,j))
    i = i + 1
# 결과 : 번호 : 1, 성 : 김씨
#	 번호 : 2, 성 : 최씨
#	 번호 : 3, 성 : 이씨

# enumerate을 사용하는 for문
people = ['김씨', '최씨', '이씨']
for number, name in enumerate(people):
    print('번호 : {}, 성 : {}'.format(number, name))
# 결과 : 번호 : 0, 성 : 김씨
#	 번호 : 1, 성 : 최씨
#	 번호 : 2, 성 : 이씨
#	 번호를 1번부터 하고 싶으면, format(number+1, name)으로 변경하면 됨.

아래 예제에서 enumerate에서 나온 값을 number와 name으로 받았음.

순서대로 인덱스와 원소이므로, 다른 변수로 선언해도 무방함.

 

zip

 

동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수

반복 가능한 객체들을 병렬로 묶어주는 함수
각 원소들을 tuple 구조로 묶음

list(zip([1,2,3,], [4,5,6], [7,8,9]))
# 결과 : [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

list(zip(['one', 'two'],[1,2]))
# 결과 : [('one', 1), ('two', 2)]

 

같은 위치에 있는 데이터끼리 묶어주는 것을 확인.

# zip 활용

kor = ('사과', '바나나', '오렌지')
eng = ('apple', 'banana', 'orange')

for a,b in zip(kor,eng):
    print('한글 : {}, 영어 : {}'.format(a,b))
    
# 결과 : 한글 : 사과, 영어 : apple
#	 한글 : 바나나, 영어 : banana
#	 한글 : 오렌지, 영어 : orange

 

lambda

 

lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다.
 기본 구조 -> lambda 변수 : 수행할 문장

 

# lambda 예제

def add(a,b):
    return a+b
    
# def로 선언된 함수를 lambda을 활용하면 아래와 같다.
add = lambda a,b : a+b

 

map()

 

map(함수, 자료)은 리스트(튜플, 문자 등)의 원소에 지정한 함수로 동일하게 처리해 주는 함수

 

# map() 함수 예제

a = [1.1, 2.3, 3.5, 4.1]
list(map(str,a))
# 결과 : ['1.1', '2.3', '3.5', '4.1']

list(map(int,a))
# 결과 : [1, 2, 3, 4]


# for문으로 할 경우
a = [1.1, 2.3, 3.5, 4.1]
for i in range(len(a)):
    a[i] = str(a[i])
a
# 결과 : ['1.1', '2.3', '3.5', '4.1']

 

map함수 활용 - map(lamda 변수:수행코드, 데이터)

# map(lamda 변수:수행코드, 데이터) 예제

list(map(lambda a: str(a), [1.1, 2.6, 3.3, 4.8]))
# 결과 :['1.1', '2.6', '3.3', '4.8']

 

 

Ref

 

렛유인 - 파이썬 데이터 분석 - 기초이론

렛유인 - 파이썬 데이터 분석 - 전처리&시각화

728x90