CodeWars의 임무는 나로 하여금 생각하게 한다--lambda의 힘!

12469 단어 pythoncodewarslambda
모르면CodeWars--가보세요.
이것은 연습을 하고 새로운 지식을 얻는 좋은 곳이다. 왜냐하면 어떤 숙제는 너를 골치 아프게 할 수 있기 때문이다.특히 경험이 풍부한 개발자가 아니라면
숙제가 어려워서가 아니라 경험이 많지 않은 사람으로서 무엇을 찾고 어디서 찾는지 배워야 하기 때문이다.
나에게 있어서 그 중의 하나는 다음과 같은 임무(kata)이다.
몇 가지 예를 살펴보겠습니다.
일곱 번(5번) 35번으로 돌아가야 합니다.
4(더하기 9)는 반드시 13으로 돌아가야 한다
8(빼기 3()#이(가) 5로 반환되어야 합니다.
6 (2 나누기) 은 3 을 반환해야 한다.
요구 사항:
0("0")에서 9("9")까지의 모든 숫자에는 함수가 있어야 합니다.
다음 수학 연산에는 함수가 있어야 합니다.
플러스, 마이너스, 회, 나누기(Ruby 및 Python에서 나누기)
매번 계산에는 하나의 연산과 두 개의 숫자만 포함된다.
가장 바깥쪽의 함수는 왼쪽 조작수를 대표하고, 가장 안쪽의 함수는 오른쪽 조작수를 대표한다.
제법은 정수 제법이어야 한다.예를 들어, 그것은 2.66666:8이 아니라 2로 돌아가야 한다. (3 ()
언뜻 보기에는 임무가 간단해 보이지만...나는 이미 이 임무를 해결하려고 몇 시간 동안 시도했다. 운이 나빴다.나는 해결 방안의 힌트를 찾기 위해 페이지의 토론을 보아야 한다.

무엇이 lambda입니까? 우리는 어떻게 여기서 그것을 실현합니까?
Lambda 함수는 작은 익명 함수입니다.
이것은 단문장 함수로 일부 물건을 되돌려주지만,return 키워드는 은밀하며, 실제로는 lambda 함수의 구조에 나타나지 않는다.
정규 함수와 lambda 함수를 비교해 보겠습니다.
def regular_function(number):
    return number

lambda_function = lambda number: number

print(regular_function(7))
print(lambda_function(8))

>>> 7
>>> 8
Lambda에는 여러 매개변수가 있을 수 있지만 표현식은 하나만 있을 수 있습니다.
lambda 구문:
lambda 매개 변수:표현식
multiply = lambda x, y: x * y
print(multiply(2, 5)) # prints 10

add = lambda x, y: x + y
print(add(6, 5)) # prints 11
이 예들을 볼 때, lambda 함수가 일반 함수에 비해 우세한 것을 볼 수 없다.
이것이 바로 lambda의 가장 좋은 용도는 그것을 다른 함수 중의 익명 함수로 사용하는 것이다.
이 문서의 시작 부분에 있는 CodeWars 작업에서 설명하겠습니다.
예를 들어 five(times(three()))는 15로 돌아가야 한다. times()는 5five()와 3three()을 취하여 그것들을 곱하고 15로 돌아가야 한다.
이에 따라 five()는 5로, three()는 3으로 되돌아가야 한다.그러나 이 두 함수 모두 다른 함수를 매개 변수로 할 수 있어야 한다(이 예는times().
만약 five() 매개 변수의 함수가 없다면, 그것은 5를 되돌려야 한다.만약 그것이 매개 변수로 함수가 있다면, 이 함수를 되돌려주고 5를 매개 변수로 사용할 수 있을 것이다.
현재 우리는 five(), three(), 그리고 0에서 9까지의 숫자를 정의하는 데 사용되는 통용 함수를 작성할 것이다.numbers.py 파일은 다음과 같습니다.
def universal_function(number, func=None):
   if func:
      return func(number)
   else:
      return number

def five(func=None):
   return universal_function(5, func)
universal_function() 뭐 하는 사람이에요?func를 매개 변수로 제공하면 func에서 이 숫자를 매개 변수로 사용합니다.
제공하지 않으면, 숫자 하나만 되돌려줍니다.
이제 func에 코드를 추가합니다. 이것은 three()의 코드와 기본적으로 같습니다.
def three(func=None):
   return universal_function(3, func)

현재, 우리는 계산에 사용할 함수 five() 를 작성해야 한다.여기 lambda를 사용할 거예요!
임무에 따라times()는 15로 돌아가야 한다.그래서 five(times(three()))times()에서 숫자를 뽑아야 한다.
여기를 three()에 추가합니다.
def times(x):
   return lambda y: y * x
부치 표시: 가장 바깥쪽의 함수는 왼쪽 조작수를 나타내고, 가장 안쪽의 함수는 오른쪽 조작수를 나타낸다.
그래서 x는 five(), y는 numbers.py에서 왔다.
지금 우리는 이 국면을 타파해야 한다.three()는 가장 내부의 함수로 숫자 3, 즉 x만 되돌려준다.five()는 가장 바깥쪽의 함수로 5와three()를 되돌려 매개 변수로 제공한다.
다시 말하면 five().5는 y,func에 5와 3을 곱하면 결과는 15이다.
마찬가지로, 우리는 다른 숫자와 계산을 위해 코드를 작성할 것이다.
최종 확정five(5, function=times()):
def universal_function(number, func = None):
   if func:
      return func(number)
   else:
      return number

# Numbers
def zero(func=None): 
   return universal_function(0, func)

def one(func=None): 
   return universal_function(1, func)

def two(func=None): 
   return universal_function(2, func)

def three(func=None): 
   return universal_function(3, func)

def four(func=None): 
   return universal_function(4, func)

def five(func=None): 
   return universal_function(5, func)

def six(func=None): 
   return universal_function(6, func)

def seven(func=None): 
   return universal_function(7, func)

def eight(func=None): 
   return universal_function(8, func)

def nine(func=None): 
   return universal_function(9, func)

# Calculations
def times(x): return lambda y: y * x
def divided_by(x): return lambda y: y/x
def plus(x): return lambda y: y + x
def minus(x): return lambda y: y - x
참고:
만약 네가 아직 코드전을 시도해 본 적이 없다면, 가서 해라.새로운 것을 배우고 뇌를 재구성하는 좋은 방법.

좋은 웹페이지 즐겨찾기