파이썬, 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)

 

<이상>

 

 

반응형

+ Recent posts