파이썬, sort(), sorted() 함수 활용하기
글. 오상문 sualchi@daum.net
랜덤 생성 기능을 이용하여 리스트를 만들고 그것을 정렬하거나
리스트의 자료 항목이 집합형인 경우 특정 키를 기준으로 정렬하는 예제입니다.
#---------------------------------------------
import random
# 랜덤 정수(1~45 범위) 7개 가진 리스트 생성
nums = random.sample(range(1, 46), 7)
print("랜덤자료:", nums)
# 오른차순 정렬
nums.sort()
print("오름차순:", nums)
# 내림차순 정렬
nums.sort(reverse=True)
print("내림차순:", nums)
print()
#--------------------------------------------
# 로또 번호 출력하기 (보너스 번호는 정렬 제외)
for i in range(5):
nums = random.sample(range(1,46),7) # 로또 번호
nums2 = sorted(nums[:-1]) # 끝 번호: 보너스 번호
print("로또 정렬후", nums2, '+', nums[-1])
#--------------------------------------------
print()
scores = [('이성수', 2019980, 3.8),
('김종호', 2019983, 3.0),
('박동묵', 2019982, 4.1),
('조상문', 2019981, 2.5)]
st = sorted(scores, key=lambda s: s[1]) # scores 값(s)의 s[1] 기준
# 학번 순서로 정렬됨
# sort()는 자체를 정렬하고,
# sorted()는 정렬된 새 값을 생성하여 돌려줌
for i in range(len(st)): print(st[i])
print()
st = sorted(scores, key=lambda s: s[0]) # scores 값(s)의 s[0] 기준
# 이름 순서로 정렬됨
for i in range(len(st)): print(st[i])
print() # scores 값(s)의 s[2] 기준
st = sorted(scores, key=lambda s: s[2], reverse=True)
# 점수 순서로 정렬됨 (높은 점수부터 출력)
for i in range(len(st)): print(st[i])
[실행 결과]
랜덤자료: [4, 3, 19, 10, 21, 39, 45]
오름차순: [3, 4, 10, 19, 21, 39, 45]
내림차순: [45, 39, 21, 19, 10, 4, 3]
로또 정렬후 [16, 18, 25, 37, 38, 42] + 20
로또 정렬후 [6, 19, 22, 29, 34, 35] + 13
로또 정렬후 [14, 31, 37, 41, 44, 45] + 26
로또 정렬후 [8, 16, 19, 30, 38, 42] + 12
로또 정렬후 [2, 4, 10, 11, 12, 29] + 28
('이성수', 2019980, 3.8)
('조상문', 2019981, 2.5)
('박동묵', 2019982, 4.1)
('김종호', 2019983, 3.0)
('김종호', 2019983, 3.0)
('박동묵', 2019982, 4.1)
('이성수', 2019980, 3.8)
('조상문', 2019981, 2.5)
<이상>
'Python 기초' 카테고리의 다른 글
파이썬, 정수가 0인지 검사하는 다양한 방법과 속도 비교 (0) | 2019.10.15 |
---|---|
파이썬, 사이즈별 셔츠 수량 구하기 (0) | 2019.10.15 |
파이썬, 2xn 타일링 문제 (0) | 2019.10.11 |
파이썬, 10,16, 8, 2진수 출력하기 (0) | 2019.10.11 |
파이썬, JadenCase 문자열 만들기 (0) | 2019.10.10 |