Python 에서 Operator 모듈 사용

3597 단어 PythonOperator모듈
Python 의 Operator 모듈 은 함수 식 프로 그래 밍 을 지원 할 수 있 습 니 다.
1 계산 함수
만약 우리 가 단 계 를 계산 하 는 함수 가 필요 하 다 고 가정 하면,일반적인 방법 은 재 귀 를 사용 하 는 것 이다.함수 식 프로 그래 밍 을 사용 하면 두 가지 방식 이 있 습 니 다.하 나 는 lambda 이 고 다른 하 나 는 Operator 모듈 의 산술 함 수 를 사용 할 수 있 습 니 다.우리 비교 해 보 자.
우선 lambda 방식 으로 구현:

from functools import reduce
def fact(n):
  return reduce(lambda a, b: a * b, range(1, n + 1))
여기 reduce 방법 을 사 용 했 습 니 다.reduce()함수 문법:reduce(function, iterable[, initializer]).그 중의 function 함 수 는 두 개의 매개 변수 가 있다.reduce()함 수 는 집합 중의 첫 번 째,두 번 째 요 소 를 function 함수 로 처리 하고 얻 은 결 과 는 세 번 째 요소 와 function 함수 로 처리 하 며 마지막 으로 하나의 결 과 를 얻 습 니 다.
reduce()함수 의 function 은 lambda 표현 식 을 사용 합 니 다.두 번 째 입 참 iterable 은 range()방법 으로 생 성 됩 니 다.
이어서 Operator 모듈 의 mul 함 수 를 사용 하여 단계 곱 하기:

from operator import mul
def factWithMul(n):
  return reduce(mul, range(1, n + 1))
상대 적 으로 Operator 모듈 의 계산 함 수 를 사용 하면 코드 가 더욱 간결 합 니 다.
소스 코드 에서 분석 하면 mul 함 수 는 두 개의 입 삼 을 계산 하 는 곱 이다.

def mul(a, b):
  "Same as a * b."
  return a * b
Operator 모듈 내부 에 유사 한 계산 함수 도 많이 정의 되 었 습 니 다.예 를 들 어:

2 여과 함수
operator 모듈 에는 조건 부 여과 작용 을 할 수 있 는 함수 도 있다.
먼저 itemgetter 함 수 를 소개 합 니 다.f 함수,f=itemgetter(2)를 정의 했다 고 가정 하면 f(r)를 호출 하면 실제 r[2]로 돌아 갑 니 다.즉,들 어 오 는 입 참 r 는 결국 r 의 색인 값 이 2(1 부터 계산)부분 으로 되 돌아 간 것 이다.
itemgetter 함수 응용 장면 은 원 그룹의 특정한 필드 에 따라 원 그룹의 목록 을 정렬 합 니 다.예 를 들 어 우 리 는 JSON 형식의 도시 데 이 터 를 가지 고 있 는데 그 줄 임 말 을 정렬 해 야 한다.

from operator import itemgetter

metro_areas = [('Tokyo', 'JP', 36.933, (35.689722, 139.691667)), ('Delhi NCR', 'IN', 21.935, (28.613889, 77.208889)),
        ('Mexico City', 'MX', 20.142, (19.433333, -99.133333)),
        ('New York-Newark', 'US', 20.104, (40.808611, -74.020386)),
        ('Sao Paulo', 'BR', 19.649, (-23.547778, -46.635833)),
        ]
for city in sorted(metro_areas, key=itemgetter(1)):
  logging.info('city -> %s', city)
실행 결과:

INFO - city -> ('Sao Paulo', 'BR', 19.649, (-23.547778, -46.635833))
INFO - city -> ('Delhi NCR', 'IN', 21.935, (28.613889, 77.208889))
INFO - city -> ('Tokyo', 'JP', 36.933, (35.689722, 139.691667))
INFO - city -> ('Mexico City', 'MX', 20.142, (19.433333, -99.133333))
INFO - city -> ('New York-Newark', 'US', 20.104, (40.808611, -74.020386))
도시 데이터 배열 의 모든 요 소 를 나 누 어 보면 바로 원조 형식 이다.itemgetter 함수 에서 원 그룹의 두 번 째 값 을 sorted 함수 의 정렬 근거 로 추출 합 니 다.
itemgetter 에 들 어 오 는 인삼 이 하나 가 아니라면 필터 함수 입 니 다.필요 한 열 만 걸 러 냅 니 다.
예 를 들 어 우 리 는 도시 배열 중의 도시 약칭 과 소재 좌표 만 있 으 면 이렇게 할 수 있다.

cc_name = itemgetter(1, 3)
for city in metro_areas:
logging.info('city -> %s', cc_name(city))
실행 결과:

INFO - city -> ('JP', (35.689722, 139.691667))
INFO - city -> ('IN', (28.613889, 77.208889))
INFO - city -> ('MX', (19.433333, -99.133333))
INFO - city -> ('US', (40.808611, -74.020386))
INFO - city -> ('BR', (-23.547778, -46.635833))
이상 은 Python 에서 Operator 모듈 의 사용 에 대한 상세 한 내용 입 니 다.Python 에서 Operator 모듈 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기