programing

'key' 및 lamda 식을 사용하는 python max 함수

goodcopy 2022. 10. 7. 21:46
반응형

'key' 및 lamda 식을 사용하는 python max 함수

OOP 출신신opopopopopopopopopopopopopopopopopopopopopopop.는 ★★★★★★★★★★★★★★를 사용하고 있습니다.max하여 타입의 를 Player최대를 가지다totalScoreplayers.

def winner():
    w = max(players, key=lambda p: p.totalScore)

는 타입의 합니다.Player최대를 가지다totalScore하다

  1. 요?max 주장을 떤떤주 장장 ??? ???나는 서류를 봤지만 이해하지 못했다.
  2. 「」의 key최대 기능 중?나는 그것이 또한 의 맥락에서 사용되는 것을 알고 있다.sort
  3. 람다 표현의 의미?어떻게 읽어요?그들은 어떻게 일하는가?

이것들은 모두 매우 이해하기 어려운 개념적인 질문들이지만 내가 언어를 이해하는 데 도움이 될 것이다.예를 들어 설명해 주시면 감사하겠습니다.감사해요.

lambda함수이며,

def func(p):
   return p.totalScore     

, 이제max다음과 같이 됩니다.

max(players, key=func)

지.........def은 표현이한 곳에 수 문장이 필요할 수 .아, 아, 아, 아, 아, 아, 아, 아, 아.lambda가 사용됩니다.

:lambda'에합니다.def수 없습니다따라서 명령어 내부에는 명령어를 사용할 수 없습니다.lambda , , , , , , , , , , , , , , , , , , , , , , , .


무인 does does 가 뭐죠?max 할수 수 do do do?

max(a, b, c, ...[, key=func]) -> 값

하나의 반복 가능한 인수를 사용하여 가장 큰 항목을 반환합니다.인수가 둘 이상인 경우 가장 큰 인수를 반환합니다.

따라서 가장 큰 개체를 반환합니다.


는 어떻게 ?key 일?

로는 Python 2 Python 2 입니다.key는 오브젝트 유형에 따라 규칙 세트에 따라 항목을 비교합니다(예를 들어 문자열은 항상 정수보다 큼).

전에 하거나 특정인덱스에 하려면 , 「」를 할 .key★★★★★★ 。

예 1:

간단한 예로 문자열 형식의 숫자 목록이 있지만 이러한 항목을 정수 값으로 비교한다고 가정합니다.

>>> lis = ['1', '100', '111', '2']

서 ★★★★max 원래'비교하다'가 나옵니다).'2' :력 as : ( ) 。

>>> max(lis)
'2'

하려면 , 「」를 사용합니다.keylambda:

>>> max(lis, key=lambda x:int(x))  # compare `int` version of each item
'111'

2: '2: '의 적용max튜플 목록으로 이동합니다.

>>> lis = [(1,'a'), (3,'c'), (4,'e'), (-1,'z')]

로는 " " 입니다.max첫 번째 인덱스로 항목을 비교합니다.첫 번째 지수가 동일하면 두 번째 지수를 비교합니다.예시와 같이 모든 항목에는 고유한 첫 번째 인덱스가 있으므로 다음과 같이 답할 수 있습니다.

>>> max(lis)
(4, 'e')

그러나 각 항목을 인덱스 1의 값으로 비교하려면 어떻게 해야 합니까?: 사용: 사용: 사용방법lambda:

>>> max(lis, key = lambda x: x[1])
(-1, 'z')

다른 유형의 개체를 포함하는 반복 가능한 항목 비교:

혼합 항목 목록:

lis = ['1','100','111','2', 2, 2.57]

Python 2 에서는, 다음의 2 종류의 아이템을 비교할 수 있습니다.

>>> max(lis)  # works in Python 2
'2'
>>> max(lis, key=lambda x: int(x))  # compare integer version of each item
'111'

하지만 Python 3에서는 더 이상 그럴 없습니다.

>>> lis = ['1', '100', '111', '2', 2, 2.57]
>>> max(lis)
Traceback (most recent call last):
  File "<ipython-input-2-0ce0a02693e4>", line 1, in <module>
    max(lis)
TypeError: unorderable types: int() > str()

그러나 이것은 각 객체의 정수 버전을 비교하기 때문에 작동합니다.

>>> max(lis, key=lambda x: int(x))  # or simply `max(lis, key=int)`
'111'

「 」의 된 버전.max:

def max(items, key=lambda x: x):
    current = item[0]
    for item in items:
        if key(item) > key(current):
            current = item
    return current

람다에 대해서:

>>> ident = lambda x: x
>>> ident(3)
3
>>> ident(5)
5

>>> times_two = lambda x: 2*x
>>> times_two(2)
4

max함수는 최대값을 얻기 위해 사용됩니다.iterable.

반복기는 목록, 튜플, dict 객체 등이 될 수 있습니다.또는 제공한 예시와 같이 사용자 지정 개체도 사용할 수 있습니다.

max(iterable[, key=func]) -> value
max(a, b, c, ...[, key=func]) -> value

With a single iterable argument, return its largest item.
With two or more arguments, return the largest argument.

그...key=func으로 옵션인 '인수'를 할 수 .key지정된 반복기/반복기를 기준으로 하는 함수로 정렬되고 최대값이 반환됩니다.

lambda비단뱀할 때playerplayer.totalScore해서 할 수 있는 것은 기능하는 으로 넘어갔습니다.max됩니다.key 의 total Scoreplayer.player의 「」를 사람.totalScore.

'아니오'의 경우key인수를 지정하면 기본 Python 순서에 따라 최대값이 반환됩니다.

예 -

max(1, 3, 5, 7)
>>>7
max([1, 3, 5, 7])
>>>7

people = [('Barack', 'Obama'), ('Oprah', 'Winfrey'), ('Mahatma', 'Gandhi')]
max(people, key=lambda x: x[1])
>>>('Oprah', 'Winfrey')

최대 기능은 어떻게 작동합니까?

반복 가능한 항목 중 가장 큰 항목을 찾습니다.그게 뭔지 찾을 수 있을 것 같은데, 만약 없다면 목록이나 문자열 같은 걸 루핑할 수 있어요.

키워드 키는 max 함수에서 어떤 용도로 사용됩니까?정렬 기능에서도 사용되는 것으로 알고 있습니다.

Key람다 함수로, 이 함수는max어떤 물체가 다른 물체보다 큰지 알 수 있습니다.예를 들어, 정수와 같은 명백한 것이 아니라 직접 만든 개체를 분류한다고 가정해 보십시오.

람다 표현의 의미?어떻게 읽어요?그들은 어떻게 일하는가?

그건 좀 더 큰 질문이네요.간단히 말해서 람다는 다른 코드 조각에서 사용할 수 있는 함수입니다.예를 들어 다음과 같습니다.

def sum(a, b, f):
    return (f(a) + f(b))

하려면 두 목적어가 필요합니다.a ★★★★★★★★★★★★★★★★★」b및, " " "f호출합니다.f()각 오브젝트에 대해 작성한 후 이들을 합산합니다.콜을 .

>>> sum(2, 2, lambda a:  a * 2)
8

sum()이 걸리다2 ★★★★★★★★★★★★★★★★★.f(a) becomes가 되다2 * 2 해서 4.1번 4번, 4면 되다. ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ에 대해 이렇게 합니다.b및 두 개를 합산합니다.

람다는 간단한 용어로 함수를 반환하는 함수의 개념인 람다 미적분학에서 유래했습니다. 계산을 표현하기 위한 매우 멋진 수학 개념입니다.여기서 읽고 이해하면 됩니다.

람다는 혼란스러울 수 있고 얼마나 유용한지는 금방 알 수 없기 때문에 조금 더 읽어보는 것이 좋을지도 모릅니다.여기를 보세요.

설명서에 따르면:

max(itable[, ]])
*max(params1, arg2, *params[, ])
반복 가능한 인수에서 가장 큰 항목 또는 두 개 이상의 인수 중 가장 큰 항목을 반환합니다.

하나의 positional 인수를 지정한 경우 반복 가능은 비어 있지 않은 반복 가능이어야 합니다(비어 있지 않은 문자열, 튜플 또는 목록 등).반복 가능한 항목 중 가장 큰 항목이 반환됩니다.둘 이상의 위치 인수가 지정되면 가장 큰 위치 인수가 반환됩니다.

옵션의 key 인수는 list.sort()에 사용되는 것과 같은1 인수의 순서 부여 함수를 지정합니다.key 인수는 키워드 형식이어야 합니다(예를 들어 max(a, b, c, key=func).

하는 것은 여러분들의 것이고, 이 에는 목록을 제공하고 있습니다.이 경우players그 다음에max함수는 목록의 모든 항목에 대해 반복되고 "최대"를 얻기 위해 서로 비교됩니다.

가듯이, 상이 a a 같은 로요? 이런 복잡한 물체를 가지고player하는 것은에 '하다', '비교하다', '비교하다', '비교하다'가 .key, 「」가 행해지는지가 됩니다.max는 각각의 합니다.player해서 '을'람다'라고 pplayersp.totalscore그것을 비교의 가치로 삼는 것"이라고 말했다.

max는 첫 되어 있습니다.iterable tuple) (리스트 또는 태플)

인수 " " "key되어 있습니다.None합니다.

다음의 딕셔너리 예를 검토해 주세요.

d = {'aim':99, 'aid': 45, 'axe': 59, 'big': 9, 'short': 995, 'sin':12, 'sword':1, 'friend':1000, 'artwork':23}

예:

>>> max(d.keys())
'sword'

kwarg에 대한 를하지 않고 반복 가능한 하면 알수.key을하고 있습니다.

예. 키의 최대값을 알파벳 순으로 찾는 대신 키의 길이별로 최대 키를 찾아야 할 수 있습니다.

>>>max(d.keys(), key=lambda x: len(x))
'artwork'

이 예에서 람다 함수는 알파벳 순으로 고려하는 대신 값을 평가하는 동안 반복될 키의 길이를 반환하고 있으며 키의 최대 길이를 추적하고 최대 길이를 가진 키를 반환합니다.

예.

>>> max(d.keys(), key=lambda x: d[x])
'friend'

이 예에서 람다 함수는 최대값을 갖는 해당 사전 키의 값을 반환합니다.

언급URL : https://stackoverflow.com/questions/18296755/python-max-function-using-key-and-lambda-expression

반응형