내장함수(built-in function)

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

  • 순서가 있는 자료형을 입력 받아 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