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 모듈 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.