1. 클래스를 사용하여 개체 정렬
● 한국어, 수학, 영어 점수를 포함한 학생 정보 제공 시, 오름차순으로 언어 점수별로 정렬만들다
– 열쇠논쟁에 그것을 밖으로 정렬정의 함수를 전달해야 합니다.
– 한국어 점수 상승 단순 정렬 기준인 경우 익명 기능 람다그걸 써
– 람다 이름 없이 사용할 수 있는 기능~이다
● 예를 들어 값을 두 배로 해서 반환하는 함수는 다음과 같습니다.
def f(x):
return x*2
print(f(5))
결과
10
– 이를 lambda로 작성하면 다음과 같다.
f=lambda x:x*2
print(f(5))
결과
10
– 인수 값이 위와 같은 경우 람다 이후 엑스쓰다, : 뒤쪽에~을 위한 반환된 값유형
여기서 기다려!
람다를 사용하여 객체를 정렬하기 전에 먼저 일반적인 람다 정렬에 대해 알아봅시다.
◆ 람다 정렬
a=(1,2,3,4,5,6,7,8,9)
a.sort(key=lambda x:x%2)
print(a)
– 위 코드에서 xa는 리스트의 요소이고 람다의 반환값은 x%2입니다.
a에 따른 반환 값은 다음과 같습니다.
(1,0,1,0,1,0,1,0,1,0)
– 따라서 반환 값을 기준으로 오름차순 정렬은 다음과 같습니다.
(0,0,0,0,1,1,1,1,1)
# 이에 따른 a의 원소는 (2,4,6,8,1,3,5,7,9)
결과
(2, 4, 6, 8, 1, 3, 5, 7, 9)
– 위와 같이 람다를 사용하는 경우 반환 값을 기반으로로 정렬됩니다.
a=(1,2,3,4,5,6,7,8,9)
a.sort(key=lambda x:-x)
print(a)
– 코드의 반환 값이 -x이므로 반환 값을 다음과 같이 정렬합니다.
(-9, -8, -7, -6, -5, -4, -3, -2, -1)
– 따라서 반환 값으로 정렬하여 결과를 도출하면 다음과 같은 결과가 나옵니다.
(9, 8, 7, 6, 5, 4, 3, 2, 1)
– 게다가 내림차순기본적으로 반환 값으로 정렬 –추가하다
a=(1,2,3,4,5,6,7,8,9)
a.sort(key=lambda x:x%2==0)
print(a)
– 이때 반환 조건이 x%2==0이면 어떻게 됩니까?
– 반환 조건이 x%2인지 비교해보자.
x=3
y=4
print(x%2==1)
print(y%2==1)
결과
True
False
– 위의 코드와 같이 숫자를 2로 나누고 나머지가 1일 때 홀수인지 판단하는 코드입니다.
– 답은 이거야 진실 또는 거짓말나올 것이다
– 그럼 거짓과 진실을 비교하면 어느 것이 더 큽니까?
print(True>False)
print(True==False)
print(True<False)
결과
True
False
False
– 실제로 비교 진실은 거짓보다 위대하다볼 수 있다
– 따라서 반환 값은 x%2==0 거짓말즉, x가 홀수인 값을 먼저 정렬해야 합니다.
a=(1,2,3,4,5,6,7,8,9)
a.sort(key=lambda x:x%2==0)
print(a)
# (1, 3, 5, 7, 9, 2, 4, 6, 8)
– 그럼 객체 정렬에 대해 진지하게 살펴보겠습니다.
– 한국어 점수를 기준으로 오름차순으로 정렬해 봅시다.
– 반이 결정되고 국어, 수학, 영어 5명의 학생 성적을 입력한 후 성적을 출력한다.
class Student:
def __init__(self,kor,math,eng):
self.kor=kor
self.math=math
self.eng=eng
input_data=(tuple(input().split()) for _ in range(5))
students=(Student(int(kor),int(math),int(eng)) for kor, math, eng in input_data)
print()
for student in students:
print(student.kor,student.math,student.eng)
결과
>> 30 50 60
>> 70 60 90
>> 30 40 70
>> 20 60 40
>> 90 60 50
30 50 60
70 60 90
30 40 70
20 60 40
90 60 50
students.sort(key=lambda x:x.kor)
– 엑스학생 목록의 요소입니다.
학생(한,수,영)객체~이다
– x.cor학생의 한국어 꿀왜냐하면 한국어 성적이를 바탕으로 오름차순 종류.
class Student:
def __init__(self,kor,math,eng):
self.kor=kor
self.math=math
self.eng=eng
input_data=(tuple(input().split()) for _ in range(5))
students=(Student(int(kor),int(math),int(eng)) for kor, math, eng in input_data)
print()
for student in students:
print(student.kor,student.math,student.eng)
print()
students.sort(key=lambda x:x.kor)
for student in students:
print(student.kor,student.math,student.eng)
결과
30 50 60
70 60 90
30 40 70
20 60 40
90 60 50
# 정렬 전
30 50 60
70 60 90
30 40 70
20 60 40
90 60 50
# 정렬 후
20 60 40
30 50 60
30 40 70
70 60 90
90 60 50
– 이 시간 수학 포인트 기준 내림차순정리하자
class Student:
def __init__(self,kor,math,eng):
self.kor=kor
self.math=math
self.eng=eng
input_data=(tuple(input().split()) for _ in range(5))
students=(Student(int(kor),int(math),int(eng)) for kor, math, eng in input_data)
print()
for student in students:
print(student.kor,student.math,student.eng)
print()
students.sort(key=lambda x: -x.math)
for student in students:
print(student.kor,student.math,student.eng)
– 내림차순으로 표준 수학 점수 그대로 X. 수학~을 위한 –추가하여 해결
30 50 60
70 60 90
30 40 70
20 60 40
90 60 50
# 정렬 전
30 50 60
70 60 90
30 40 70
20 60 40
90 60 50
# 정렬 후
70 60 90
20 60 40
90 60 50
30 50 60
30 40 70
2. 카드를 이용한 물건 분류
– 거의, 람다그걸 써
– 이때 람다에서 x의 값국어, 수학, 영어 성적 튜플 이것은 양식입니다.
– 한국어 점수는 시리즈의 0번째 지수이기 때문에 한국어 점수 기준 오름차순 정렬하면 엑스(0)반환 값으로.
– 또한 수학 점수는 배열의 첫 번째 색인이므로 수학 등급 내림차순 정렬하면 -x (1)반환 값으로.
input_data=(tuple(input().split()) for _ in range(5))
students=((int(kor),int(math),int(eng)) for kor, math, eng in input_data)
print()
for kor,math,eng in students:
print(kor, math, eng)
print()
students.sort(key=lambda x: x(0))
for kor,math,eng in students:
print(kor, math, eng)
print()
students.sort(key=lambda x: -x(1))
for kor,math,eng in students:
print(kor, math, eng)
결과
30 50 60
70 60 90
30 40 70
20 60 40
90 60 50
# 정렬 전
30 50 60
70 60 90
30 40 70
20 60 40
90 60 50
# 국어 성적 기준
20 60 40
30 50 60
30 40 70
70 60 90
90 60 50
# 수학 성적 기준 내림차순
20 60 40
70 60 90
90 60 50
30 50 60
30 40 70
3. 개체를 행별로 정렬
– 정렬 및 람다를 사용합니다.
– X 팩터 튜플때 x(k). 열광한값을 반환하는 경우 엑스(케이)당신이 말하는 경우 알파벳 순서정렬 기준
input_data=(tuple(input().split()) for _ in range(5))
students=((int(kor),int(math),int(eng),name) for kor, math, eng, name in input_data)
print()
students.sort(key=lambda x: x(3))
for kor,math,eng,name in students:
print(kor, math, eng,name)
결과
>> 30 50 60 john
>> 70 60 90 tom
>> 30 40 70 max
>> 20 60 40 jane
>> 90 60 50 beo
90 60 50 beo
20 60 40 jane
30 50 60 john
30 40 70 max
70 60 90 tom
– 반면 값은 내림차순으로 반환 –네가 떠난다면 잘못된파리
input_data=(tuple(input().split()) for _ in range(5))
students=((int(kor),int(math),int(eng),name) for kor, math, eng, name in input_data)
print()
students.sort(key=lambda x: -x(3))
for kor,math,eng,name in students:
print(kor, math, eng,name)
결과
TypeError: bad operand type for unary -: 'str'
– 반환 값입니다.
열광한이 때문에 – 추가할 수 없습니다.
– 숫자반죽 – 절대값이 크면 더 크게 작은 왜냐하면 내림차순로 할 수 있었다
– 이를 해결하기 위해 가나다순으로 정렬한 후, 반전=참추가하다
input_data=(tuple(input().split()) for _ in range(5))
students=((int(kor),int(math),int(eng),name) for kor, math, eng, name in input_data)
print()
students.sort(key=lambda x: x(3),reverse=True)
for kor,math,eng,name in students:
print(kor, math, eng,name)
결과
>> 30 50 60 john
>> 70 60 90 tom
>> 30 40 70 max
>> 20 60 40 jane
>> 90 60 50 beo
70 60 90 tom
30 40 70 max
30 50 60 john
20 60 40 jane
90 60 50 beo
– 수업다음을 사용하여 행별로 정렬
class Student:
def __init__(self,kor,math,eng,name):
self.kor=kor
self.math=math
self.eng=eng
self.name=name
input_data=(tuple(input().split()) for _ in range(5))
students=(Student(int(kor),int(math),int(eng),name) for kor, math, eng, name in input_data)
print()
students.sort(key=lambda x: x.name)
for student in students:
print(student.kor, student.math, student.eng,student.name)
print()
students.sort(key=lambda x: x.name,reverse=True)
for student in students:
print(student.kor, student.math, student.eng,student.name)
결과
30 50 60 john
70 60 90 tom
30 40 70 max
20 60 40 jane
90 60 50 beo
# 이름 사전순
90 60 50 beo
20 60 40 jane
30 50 60 john
30 40 70 max
70 60 90 tom
# 이름 사전역순
70 60 90 tom
30 40 70 max
30 50 60 john
20 60 40 jane
90 60 50 beo
GitHub – KimDongHyun0907/python-study
GitHub에서 계정을 생성하여 KimDongHyun0907/python-study 개발에 기여하십시오.
github.com