enumerate : 순서가 있는 자료형을 인덱스 값과 함께 출력해주는 함수
※ 사용가능한 자료형: 리스트, 튜플, 문자열
※ enumerate 함수는 보통 for문과 함께 사용됩니다.
작성법) for 변수 1, 변수 2 in enumerate ([리스트])
for i, name in enumerate(['body', 'foo', 'bar']):
print(i, name)
결과값:
0 body
1 foo
2 bar
위와 같이 입력 시 body, foo, bar이 인덱스 값과 함께 순서대로 출력된 것을 보실 수 있습니다.
for문처럼 반복되는 구간에서 객체의 위치 값을 알아보고 싶을 때 매우 유용하다고 하네요.
< 연습문제 1 >
enumerate 함수를 이용하여 아래와 같이 출력하시오.
1번 학생 이름 a
2번 학생 이름 b
3번 학생 이름 c
4번 학생 이름 d
names = ['a', 'b', 'c', 'd']
for i, name in enumerate (names):
print(f'{i}번 학생 이름: {name}')
filter : 반환 값이 참인 것만 걸러서 출력해주는 함수
[1, -3, 2, 0, -5, 6] 리스트의 숫자에서 양수만 출력하는 filter 함수를 작성해보았습니다.
print(list(filter(positive, [1, -3, 2, 0,-5, 6])
위 함수는 lambda를 이용해서 코드를 쓸 수 있습니다 :)
작성법) lambda 변수: 원하는 변수의 출력 조건
lamda 뒤의 변수는 x, a, num 등 원하는 변수로 작성하시면 됩니다.
list(filter(lambda x: x > 0, [1, -3, 2, 0, -5, 6])
< 연습문제 1 >
filter 함수를 이용하여 [1,2,3,4,5,6,7,8,9,10]에서 짝수만 출력해보자
(1) is_even() 함수 이용
def is_even(a):
return a % 2 == 0
list(filter(is_even, [1,2,3,4,5,6,7,8,9,10])
(2) lambda 함수 이용
list(filter(lambda x: x % 2 == 0, [1,2,3,4,5,6,7,8,9,10]))
결과값: [2, 4, 6, 8, 10]
< 연습문제 2 >
filter와 lambda를 이용하여 아래 리스트에서 3글자인 단어만 출력해보자
li = [ 'yellow', 'red', 'orange', 'blue', 'hat', 'cat' ]
list(filter(lambda x: len(x) == 3, li))
여기서 len(x)는 입력값 x의 길이를 돌려주는 함수입니다.
결과값: ['red', 'hat', 'cat']
map : 자료형의 요소에 대한 함수 수행 결과를 출력하는 함수
※ 사용가능한 자료형: 함수(f), 반복 가능한 자료형( dictionary, set, str, range )
def two_times(x):
return x * 2
list(map(two_times, [1,2,3,4]))
결과값:
[2, 4, 6, 8]
map 함수도 lambda 를 사용해 간략화 할 수 있다.
여기서 filter와 map의 차이점!
filter에는 리턴값이 참/거짓인 함수를 입력한다
< 연습문제 1 >
리스트 [1,2,3,4]의 2 제곱된 값을 출력해보자.
list(map(lambda x: x ** 2, [1,2,3,4]))
결과값: [1, 4, 9, 16]
zip: 동일한 개수로 이루어진 자료형을 묶어주는 역할
list(zip([1,2,3], [4,5,6]))
결과값:
[ (1, 4), (2, 5), (3, 6) ]
list(zip('abc', 'def'))
결과값:
[ ('a', 'd'), ('b', 'e'), ('c', 'f') ]
< 연습문제 1 >
아래 리스트를 '이름, 나이, 취업상태' 로 묶어서 나열해보자.
name_list = ['홍길동', '김파랑', '이노랑']
age_list = [31, 45, 23]
job_list = ['직장인', '취업준비생', '회사원']
profile = zip(name_list, age_list, job_list)
list(profile)
결과값: [('김은하', 23, '대학생'), ('이우주', 28, '취업준비생'), ('박태양', 35, '회사원')]
'Python' 카테고리의 다른 글
파이썬 - 피보나치 함수 / 프로젝트 오일러 2번 문제 (0) | 2022.03.17 |
---|---|
파이썬 - 정규표현식 (메타 문자/ 메서드) (0) | 2022.03.16 |
파이썬 - random 함수 (0) | 2022.03.16 |
파이썬 - try, except문 (0) | 2022.03.16 |
파이썬 - for문 / range (0) | 2022.02.23 |