'key' 및 lamda 식을 사용하는 python max 함수
OOP 출신신opopopopopopopopopopopopopopopopopopopopopopop.는 ★★★★★★★★★★★★★★를 사용하고 있습니다.max하여 타입의 를 Player최대를 가지다totalScoreplayers.
def winner():
w = max(players, key=lambda p: p.totalScore)
는 타입의 합니다.Player최대를 가지다totalScore하다
- 요?
max주장을 떤떤주 장장 ??? ???나는 서류를 봤지만 이해하지 못했다. - 「」의
key최대 기능 중?나는 그것이 또한 의 맥락에서 사용되는 것을 알고 있다.sort - 람다 표현의 의미?어떻게 읽어요?그들은 어떻게 일하는가?
이것들은 모두 매우 이해하기 어려운 개념적인 질문들이지만 내가 언어를 이해하는 데 도움이 될 것이다.예를 들어 설명해 주시면 감사하겠습니다.감사해요.
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
'programing' 카테고리의 다른 글
| LINQ에서 엔티티로 'System' 메서드를 인식하지 않습니다.String ToString() 메서드입니다.이 메서드는 스토어 식으로 변환할 수 없습니다. (0) | 2022.10.07 |
|---|---|
| PHPStorm의 PHP 파일에 대한 잘못된 구문 강조 표시 (0) | 2022.10.07 |
| 사용자 지정 지시 VueJ에서 모델 업데이트s (0) | 2022.10.07 |
| 인덱스를 사용하면 READ UNCOMMITED 트랜잭션 중에 업데이트 잠금을 가져올 수 없습니다. (0) | 2022.10.07 |
| Java 유틸리티 클래스의 명명 규칙 (0) | 2022.10.07 |