๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Skill Up๐Ÿ”ฅ/Python

Python ์ •๋ ฌ ํ•จ์ˆ˜ sort,sorted ์ •๋ฆฌ

by ๊ธฐ๋ฉฐ๋ˆ… 2022. 3. 7.

1. sort

์›๋ณธ์„ ๋ณ€ํ˜•์‹œ์ผœ ์ •๋ ฌํ•˜๋ฉฐ '๋ณ€์ˆ˜.sort()'ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

์ •๋ ฌ ๊ธฐ์ค€์€ ๋ฌธ์ž์—ด์€ ์•ŒํŒŒ๋ฒณ, ๊ฐ€๋‚˜๋‹ค์ˆœ์ด๊ณ  ์ˆซ์ž๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค.

num_list = [10,20,15,50,22]
num_list.sort()
print(num_list)
>>> [10, 15, 20, 22, 50]

str_list = ['a','d','e','b','c']
str_list.sort()
print(str_list)
>>> ['a', 'b', 'c', 'd', 'e']

 

2. sorted

์›๋ณธ์„ ๋ณ€ํ˜•์‹œํ‚ค์ง€ ์•Š๊ณ  ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ด„ํ˜ธ()์•ˆ์—๋Š” iterableํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ์ •๋ ฌ ๊ธฐ์ค€์€ ์•ž์„  sort์™€ ๋™์ผํ•˜๋‹ค.

print(sorted([10,20,15,50,22]))
>>> [10, 15, 20, 22, 50]

str_list = ['a','d','e','b','c']
print(sorted(str_list))
>>> ['a', 'b', 'c', 'd', 'e']

 

3. Parameter

sort์™€ sorted ๋ชจ๋‘ key, reverse ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๋Š”๋‹ค.

sorted(์ •๋ ฌํ•  ๋ฐ์ดํ„ฐ, reverse ํŒŒ๋ผ๋ฏธํ„ฐ) / sorted(์ •๋ ฌํ•  ๋ฐ์ดํ„ฐ, key ํŒŒ๋ผ๋ฏธํ„ฐ) / sorted(์ •๋ ฌํ•  ๋ฐ์ดํ„ฐ, key ํŒŒ๋ผ๋ฏธํ„ฐ, reverse ํŒŒ๋ผ๋ฏธํ„ฐ)ํ˜•ํƒœ๋กœ ์“ฐ์ธ๋‹ค.

 

3-1. reverse

bool๊ฐ’์„ ๋„ฃ๋Š”๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ reverse=False(์˜ค๋ฆ„์ฐจ์ˆœ)์ด๋‹ค. reverse=True๋กœ ์„ค์ •์‹œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

num_list = [10,20,15,50,22]
num_list.sort(reverse=True)
print(num_list)
>>> [50, 22, 20, 15, 10]

print(sorted(['a','d','e','b','c'],reverse=True))
>>> ['e', 'd', 'c', 'b', 'a']

 

3-2. key

์ •๋ ฌ์„ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ๋„ฃ๋Š”๋‹ค. lambda๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์ •ํ•œ key๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜๊ณ  ๊ธฐ๋ณธ๊ฐ’์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‹ค.

str_list=['aaa','ddddd','e','bbbb','cc']
str_list.sort(key=len) #๋ฌธ์ž๊ธธ์ด์— ๋”ฐ๋ผ ์ •๋ ฌ
>>> ['e', 'cc', 'aaa', 'bbbb', 'ddddd']

tuple_list=[('aaa',10),
            ('ddddd',20),
            ('e',15),
            ('bbbb',50),
            ('cc',22)]
#์ฒซ๋ฒˆ์งธ ์ธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
tuple_list.sort(key=lambda x:x[0]) 
>>> [('aaa', 10), ('bbbb', 50), ('cc', 22), ('ddddd', 20), ('e', 15)]

#๋‘๋ฒˆ์งธ ์ธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ ๋’ค ์ฒซ๋ฒˆ์งธ ์ธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
#์ฒซ๋ฒˆ์งธ ์ธ์ž์— ๋™์ผํ•œ ๊ฐ’์ด ์žˆ์–ด ๋‘๋ฒˆ์งธ ์ธ์ž๋ฅผ ํ™•์ธํ•ด์•ผํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ
tuple_list.sort(key=lambda x:(x[1],x[0]))
>>> [('aaa', 10), ('e', 15), ('ddddd', 20), ('cc', 22), ('bbbb', 50)]

# '-'๋ถ€ํ˜ธ๋ฅผ ์ด์šฉํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ๋„ ๊ฐ€๋Šฅ ex) key=lambda x:(x[1],-x[0])