본문 바로가기

Programming/Python

파이썬 기초 함수(map, enumerate, zip, filter)

map()

 map함수는 이터러블 객체를 입력받아 각각의 원소에 특정 함수를 적용한 결과를 반환하는 내장함수 이다.

def square(x):
    return x * x

numbers = [1, 2, 3, 4, 5]

square_numbers = list(map(square, numbers))

print(square_numbers) # [1, 4, 9, 16, 25]

1, 2, 3.. 등의 원소가 각각 square의 인자로 전달되어, 제곱된 결과값들로 새로운 객체가 되어 반환되었다.

 

enumerate()

 리스트를 인자로 받고, 리스트의 각 원소에 인덱스를 부여해 튜플로 반환.

for i in enumerate(list1):
	print(i)
    
'''
(0, el1)
(1, el2)
...
'''

 

 

zip()

iterable 객체를 인자로 받아서, 그 객체가 담고있는 원소를 접근할 수 있는 iterator를 반환해주는 함수.

a = [1,2,3]
b = ['a', 'b', 'c']

for i in zip(a, b):
	print(i)
   
'''
(1, 'a')
(2, 'b')
(3, 'c')
'''

 

zip 을 활용한 리스트 만들기 및 리스트 분리(튜플로 반환)

zipped = list(zip(a,b))
'''
[(1, 'a'), (2, 'b'), (3, 'c')]
'''


# zip + unpacking 으로 리스트 분리
a1, b1 = zip(*zipped)
# a1 : (1, 2, 3)  - tuple
# b1 : ('a', 'b', 'c') - tuple

 zip과 unpacking을 활용하면 2 차원 리스트에서 앞 원소와 뒤 원소를 분리하여 리스트로 만들 때 유용할 것 같다.

 

 

filter()

필터 함수는 리스트와 같은 객체에서 조건에 맞는 원하는 값만 추출하기 위해서 주로 사용한다. 함수 내에서 리스트와 같은 인자를 받으면 각 인자가 함수의 매개변수로 전달되고, 함수 내부에서 리턴되는 값만으로 다시 리스트를 만들 수 있다. 

def filterTest(varin):
	if varin % 2 == 0:
    	return varin
        
list1 = [1,2,3,4]

list(filter(filterTest, list1)) #[2,4]

 

 

reduce()

이터러블 객체의 각 원소에 대해서 함수를 적용하고, 그 결과값을 이후 계산에 그대로 사용하는 함수이다. 이러한 특성을 이용해 팩토리얼과 같은 함수를 쉽게 구현할 수 있다.

reduce(lambda x, y : x*y, [i for i in range(1, 6)]) # 5! = 120

'Programming > Python' 카테고리의 다른 글

파이썬 이터러블 객체, 이터레이터, 제너레이터, 데코레이터  (2) 2023.11.27
아스키 코드 - 문자 간 변환  (2) 2023.11.26
파이썬 변수 앞 * 연산자  (0) 2023.11.25
__dict__ 와 __slots__  (0) 2023.07.11
Pylint  (0) 2023.01.30