62. 파이썬 내장 함수 enumerate eval filter

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난 포스팅에서 파이썬의 dir divmod 이라는 내장 함수에 대해 간략하게 살펴 보았습니다.
이번 포스팅에서는 파이썬 내장 함수 중 enumerate eval filter 함수에 대해 공부해 보도록 하겠습니다.

Smartdev.kr Table of Contents

파이썬 내장 함수

enumerate

enumerate 의 의미는 열거하다 라는 의미입니다.
enumerate 함수는 순서가 있는 리스트나 튜플, 문자열의 데이터를 입력으로 받고 그 인덱스 값을 포함하는 enumerate 라는 객체를 리턴하게 됩니다.

Python
>>> for i, name in enumerate(['body', 'foo', 'bar']):
...     print(i, name)
...
0 body
1 foo
2 bar
>>>

[‘body’, ‘foo’, ‘bar’] 라는 리스트를 for 문장을 통해 리스트 객체수 만큼 반복문을 돌려주면서 i 라는 변수를 통해 리스트의 0 번째, 1 번째, 2 번째가 가지고 있는 요소. name 을 출력하게끔 해봤습니다.
그 결과 리스트의 주소값과 함께 ‘body’, ‘foo’, ‘bar’ 가 순서대로 출력이 되었습니다.
위 예 처럼 enumerate 내장 함수는 for 문과 함께 사용하면 자료형의 현재 순서, 즉 index 와 그 값을 쉽게 알아 볼 수 있습니다.

eval

eval 내장 함수는 문자열로 구성되어 있는 표현식을 입력으로 받아 해당하는 문자열을 실행한 결과값을 리턴을 해 주는 함수 입니다.

Python
>>> eval('2+3')
5
>>> eval("'hello' + 'python'")
'hellopython'
>>> eval('divmod(5, 3)')
(1, 2)
>>>

filter

filter 라는 단어는 많이 낯이 익을 겁니다. 뭔가를 걸러낸다는 의미 이기 때문입니다.
filter 내장 함수도 의미와 같은 기능을 가지고 있습니다.

filter(func, iterable)

filter 내장 함수는 첫 번째로 함수를, 그리고 두 번째로 그 함수에 차례대로 들어가게 될 반복 가능한 데이터를 인수로 받습니다.
그리고 반복 가능한 데이터(iterable)의 요소의 순서대로 함수(func)를 호출했을 때의 결과값이 참인 것들만 묶어서(filtering) 리턴을 하게 됩니다.

Python
# positive.py
def positive(l):
    result = []
    for i in l:
        if i > 0:
            result.append(i)
    return result

print(positive([1, -3, 2, 0, -5, 6]))

위 코드를 실행해 보겠습니다.

Python
(py_study_31010) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>python positive.py
[1, 2, 6]

결과값으로 [1, 2, 6]의 리스트를 출력을 하게 됩니다.
코드를 살펴보시면 아시겠지만 if i > 0 이라는 문장을 통해 리스트를 입력을 받아서 최종 출력은 양의 정수만을 리턴을 하게하는 함수 입니다.

위 코드를 filter 내장 함수를 사용해서 작성을 해보겠습니다.

Python
# filter1.py
def positive(x):
    return x > 0

print(list(filter(positive, [1, -3, 2, 0, -5, 6])))

Python
(py_study_31010) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>python filter1.py
[1, 2, 6]

이전에 작성했던 코드와 마찬가지로 결과값으로 [1, 2, 6]의 리스트를 출력을 하게 됩니다.
filter(positive, [1, -3, 2, 0, -5, 6]) 라는 문장은 [1, -3, 2, 0, -5, 6] 리스트의 각 요소값들 중 순서대로 positive 함수에 적용하여 결과값이 참이 되는 것들만 묶어서 리턴을 하게 됩니다.
결국 위 결과처럼 1, 2, 6 이라는 숫자만이 x > 0 의 조건문에 참이 되므로 [1, 2, 6] 이라는 결과값이 출력이 되는 것 입니다.

lambda 를 사용하면 더 간단하게 작성이 가능해 집니다.

Python
>>> list(filter(lambda x: x > 0, [1, -3, 2, 0, -5, 6]))
[1, 2, 6]
>>>

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
62. 파이썬 내장 함수 enumerate eval filter

Leave a Comment