python이 sorted()에 전달 된 메소드를 처리하는 방법에 대한 질문이 있습니다.python3은 sorted()의 "key"인수에 전달 된 메서드로 무엇을합니까?
X: 1 Y: 5
X: 1 Y: 6
X: 1 Y: 5
X: 2 Y: 8
X: 2 Y: 1
X: 3 Y: 6
X: 4 Y: 2
X: 5 Y: 4
X: 6 Y: 2
X: 8 Y: 0
이 스크립트는 각 인스턴스의 X 필드의 값에 따라 SortClass 객체를 정렬합니다
#!/usr/bin/env python3
import random
class SortClass:
def __init__(self):
self.x = random.choice(range(10))
self.y = random.choice(range(10))
def getX(self):
return self.x
def getY(self):
return self.y
if __name__ == "__main__":
sortList = [SortClass() for i in range(10)]
sortedList = sorted(sortList, key = SortClass.getX)
for object in sortedList:
print("X:", object.getX(),"Y:",object.getY())
다음과 유사한 출력을 제공 : 다음과 같은 작은 스크립트를 고려하십시오. 그러나 Sorted의 "key"인수는 SortClass의 특정 인스턴스가 아니라 SortClass.getX를 가리킨다는 점에 유의하십시오. 파이썬이 실제로 "키"로 전달 된 메서드를 실제로 사용하는 방법에 대해서는 약간 혼란 스럽습니다. 전달 된 객체가 "self"인수와 동일한 유형이기 때문에 getX()를이 작업과 같이 호출합니까? 이것은 "핵심"논쟁의 안전한 사용인가?
참고 : 당신은 Python으로 정렬 마스터하려면
는 또한, 정렬 하우투를 읽어 보시기 바랍니다. 대신 operator.attrgetter를 써야합니다. 여기 예제 : http://dpaste.com/hold/36126/ – nosklo내 말은 'sortList = [Sortin] (범위 내 (10)에 대한)]' –