2020. 12. 29. 00:01ใ๐ Algorithm/๐ Python ๋ฌธ๋ฒ
์ง๋ ๊ธ์ ์ด์ด ๋ฆฌ์คํธ ์ ๋ ฌ์ ๊ดํด ์ ๋ฆฌํด๋ณด๊ณ ์ ํฉ๋๋ค!
๋ฆฌ์คํธ(list) ์๋ฃํ๊ณผ ๋์ ๋๋ฆฌ(dictionary) ์๋ฃํ์ ๋ํด ํท๊ฐ๋ฆฌ์ ๋ค๋ฉด ?!
์๋ ๊ธ์ ์ฝ๊ณ ์ค์๋ฉด ์ดํดํ์๊ธฐ ๋ ์ฌ์ฐ์ค ๊ฑฐ์์ : )
์ ๋ ฌ์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด์ ์์ฃผ ํ์ฉ๋๋ฉฐ ๋งค์ฐ ์ค์ํฉ๋๋ค!
list.sort() ์ sorted() ์ฐจ์ด์ Dictionary ์ ๋ ฌ์์ ๋ง์ด ์ฌ์ฉ๋๋ lambda ์์ ๋ํด ์ ๋ฆฌํด๋ณผ๊ฒ์ ~
๋ฆฌ์คํธ(List) ์ ๋ ฌ
๋ฆฌ์คํธ ์ ๋ ฌ์๋ list ๋ณธ์ฒด๋ฅผ ์ ๋ ฌํ๋ sort ๋ฐฉ์๊ณผ list ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ฃผ๋ sorted ๋ฐฉ์์ด ์กด์ฌํฉ๋๋ค.
์ ๋ฆฌํ์๋ฉด, ๋ฆฌ์คํธ a ๋ง ์ ๋ฆฌํ๋ฉด ๋ผ! ๐๐ป sort , ๋ฆฌ์คํธ a์ ์ ๋ ฌ๋ ๊ฐ์ด ํ์ํด! ๐๐ป sorted ๋ผ๊ณ ์ดํดํ๋ฉด ์ฌ์ธ ๊ฑฐ ๊ฐ์์!
๐ ๋ฆฌ์คํธ (list) ๋ณธ์ฒด ์ ๋ ฌ ( sort / reverse )
- sort : ์ค๋ฆ์ฐจ์ ์ ๋ ฌ (1,2,3,4 ... ) , ๊ธฐ๋ณธ๊ฐ์ ์ค๋ฆ ์ฐจ์ ์ ๋ ฌ
- reverse ์ต์ : True ์, ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
- key ์ต์ : ์ง์ ๋ ํจ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ ๋ ฌ
- reverse : ๋ฆฌ์คํธ ์์๋ค์ ๋ฐ๋๋ก ์ ๋ ฌ (๊ฑฐ๊พธ๋ก)
a = [1, 10, 5, 7, 6]
a.reverse(). # [6, 7, 5, 10, 1]
a = [1, 10, 5, 7, 6]
a.sort() # [1, 5, 6, 7, 10]
a = [1, 10, 5, 7, 6]
a.sort(reverse=True) # [10, 7, 6, 5, 1]
m = ['๋๋', 'ํ์ด์ฌ์', '์ํ๊ณ ', '์ถ๋ค']
m.sort(key=len) # ['๋๋', '์ถ๋ค', '์ํ๊ณ ', 'ํ์ด์ฌ์']
๐ ๋ฆฌ์คํธ (list) ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ (sorted / reversed)
๐ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ธฐ๋ง ํ ๋ฟ, ๋ฆฌ์คํธ์ ๋ณธ์ฒด๋ ๋ณํ(์ ๋ ฌ)๋์ง ์๋ ๋ค๋ ์ ์ ์ ํ์ธ์!
- sorted : ์ค๋ฆ์ฐจ์ ์ ๋ ฌ , ์ ๋ ฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐํ
- reversed : ๋ฆฌ์คํธ ๊ฑฐ๊พธ๋ก ๋ค์ง๊ธฐ ๋จ, iterableํ ๊ฐ์ฒด๋ฅผ ๋ฐํ
iterableํ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค๋๊ฒ ์ดํด๊ฐ ์ด๋ ค์ฐ์ค ์ ์๋๋ฐ reversed(x)์ ๊ฒฐ๊ณผ๊ฐ์ ํ์ธํด๋ณด์๋ฉด ์ดํดํ๊ธฐ ์ฌ์ธ ๊ฑฐ ๊ฐ์์~
x = [1 ,11, 2, 3]
y = sorted(x) # x - [1,11,2,3]
y # [1, 2, 3, 11]
x = [1 ,11, 2, 3]
y = reversed(x) # x - [1,11,2,3]
y # <list_reverseiterator object at 0x1060c9fd0>
list(y) # [3, 2, 11, 1]
reversed( )์ ๊ฒฐ๊ณผ๊ฐ์ nontype์ด ์๋๊ณ , iterator๊ฐ ๋๊ธฐ ์ํ ํํ์ด๋ฏ๋ก ์์ ๊ฐ์ ํํ๋ก ๋ํ์ง๋๋ค.
๋ง์ฝ reverse๋ list๊ฒฐ๊ณผ๊ฐ์ ์ป๊ณ ์ถ๋ค๋ฉด !? ๋ฆฌ์คํธ ํํ๋ก ๋ณํ์์ผ์ฃผ๋ list( )์ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.
๋์ ๋๋ฆฌ(Dictionary) ์ ๋ ฌ
๋์ ๋๋ฆฌ ์ ๋ ฌ์ ๋ํ ๋ถ๋ถ์ ์๊ณ ๋ฆฌ์ฆ ์ ๋ ฌ ๋ฌธ์ ์์ ์ ์ฉํ๊ฒ ์ฐ์ด์ง๋ง ์ ๋ชจ๋ฅด์๋ ๋ถ๋ค์ด ๋ง์ ๊ฑฐ ๊ฐ์๋ฐ์!
value ๊ธฐ์ค์ ์ ๋ ฌ๊ณผ key ๊ธฐ์ค์ ์ ๋ ฌ์ ๋ํด ์๊ฐํด๋๋ฆฌ๋ ค๊ณ ํฉ๋๋ค.
key๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฆฌ์คํธ์ ๊ฐ์ด sort()๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ์ ๋ ฌํ ์ ์์ง๋ง, value๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด lambda๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฌํด์ผ ํฉ๋๋ค.
๐ key ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ
- sorted( dic.items () ) : ์ค๋ฆ์ฐจ์ ์ ๋ ฌ , ์ ๋ ฌ๋ ๋์ ๋๋ฆฌ๋ฅผ ๋ฆฌ์คํธ ํ์ผ๋ก ๋ฐํ
- sorted ( dic.items () , reverse = True) : ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ, ์ ๋ ฌ๋ ๋์ ๋๋ฆฌ ๋ฆฌ์คํธ ํ์ผ๋ก ๋ฐํ
dic = {
1 : 'b',
3 : 'c',
5 : 'd',
2 : 'a',
4 : 'e'
}
dic2 = sorted(dic.keys()) # [ 1,2,3,4,5 ]
dic3 = sorted(dic.items()) # [ (1,'b'), (2,'a'), (3,'c'), (4,'e'), (5,'d') ]
sorted ( ) ์์ dic.keys ( ) ๋ก ์ ๋ ฌํ๊ฒ ๋๋ฉด ์ ๋ ฌ๋ Key ๊ฐ๋ง ๋ฆฌ์คํธ๋ก ๋ฐํ๋๊ณ ,
dic.items ( )๋ก ์ ๋ ฌ์์๋ ํํ(Tuple) ํํ๋ก Key๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ๋ฆฌ์คํธ๊ฐ ๋ฐํ๋์ด์ง๋๋ค!
๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์์๋ reverse ์ต์ ์ True๋ก ์ถ๊ฐํด์ฃผ๋ฉด ๋์!
dic = {
1 : 'b',
3 : 'c',
5 : 'd',
2 : 'a',
4 : 'e'
}
dic2 = sorted(dic.keys() , reverse = True) # [ 5,4,3,2,1 ]
dic3 = sorted(dic.items() , reverse = True) # [ (5,'d'), (4,'e'), (3,'c'), (2,'a'), (1,'b') ]
๐ value ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ
value๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด lambda ํจ์๋ฅผ ์ด์ฉํด์ผ ํฉ๋๋ค.
sorted ํจ์์ key ์ต์ ์ lambda ํจ์๋ฅผ ์ด์ฉํ์ฌ value๊ฐ์ผ๋ก ์ง์ ํด์ฃผ๋ ๋ฐฉ์์ธ๋ฐ์ ์๋ ์์๋ฅผ ๋ณด๋ฉด ์ดํดํ์๊ธฐ ์ฌ์ธ๊ฑฐ ๊ฐ์์~
dic = {
1 : 'b',
3 : 'c',
5 : 'd',
2 : 'a',
4 : 'e'
}
# [ (2,'a'),(1,'b'),(3,'c'),(5,'d'),(4,'e') ]
dic2 = sorted(dic.items(), key = lambda item : item[1])
item [1]๋ก ์ง์ ํด์ฃผ๋ ๊ฒ์ item[0] ์ key๊ฐ์ด๊ณ , value ๊ฐ์ item [1]์ด๊ธฐ ๋๋ฌธ์ item์ item[1]๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค๋ฅผ lambda ํจ์๋ฅผ ํตํด ์ ๋ ฌํ ์ ์์ต๋๋ค!
๊ทธ๋ ๋ค๋ฉด lambda๋ฅผ ์ด์ฉํ์ฌ key๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ์ ๋ ์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น์?!
item [0]์ผ๋ก lamda์์ item์ ์ง์ ํ์ฌ ์ ๋ ฌํด์ฃผ๋ฉด ๋ฉ๋๋ค!
dic = {
1 : 'b',
3 : 'c',
5 : 'd',
2 : 'a',
4 : 'e'
}
# [ (1,'b'), (2,'a'), (3,'c'), (4,'e'), (5,'d') ]
dic2 = sorted(dic.items(), key = lambda item : item[0])
โ๏ธ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ key ๊ฐ ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ๊ณผ ๊ฐ์ด reverse = True ์ต์ ์ ์ด์ฉํ๊ฑฐ๋ ์๋๋ฉด item [0]์ - ๋ฅผ ๋ถ์ด๋ฉด ๋ฉ๋๋ค!
๐ ๋๋ค์(lambda)์ด์ฉํ์ฌ ์ ๋ ฌ ์์ฉํด๋ณด๊ธฐ
์์ง ๋๋ค์์ ์ฌ์ฉํ์ฌ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ด ์ต์ํ์ง ์์ผ์ค ๊ฑฐ ๊ฐ์๋ฐ์ !
๊ทธ๋์ ๋๋ค์์ ํ์ฉํ ๋์ ๋๋ฆฌ ์ ๋ ฌ ์์ฉ ์์๋ฅผ ๋ง๋ค์ด ๋ณด์์ต๋๋ค ~
student = [
{'name':'kim', 'age' : 20},
{'name':'park', 'age' : 10},
{'name':'lee', 'age' : 13},
{'name':'choi', 'age' : 25},
{'name':'park', 'age' : 25},
{'name':'lee', 'age' : 33}
]
โ๏ธage๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ ํ, name์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ
stu_sorted = sorted(student, key = lambda item : (-item['age'], item['name']))
'''
[ {'name':'lee', 'age' : 33},
{'name':'choi', 'age' : 25},
{'name':'park', 'age' : 25},
{'name':'kim', 'age' : 20},
{'name':'lee', 'age' : 13},
{'name':'park', 'age' : 10} ]
'''
๐ sorted์ itemgetter ๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌํ๊ธฐ
itemgetter์ ์ฌ์ฉํ๋ฉด ์ข ๋ ์ฝ๊ฒ ์ ๋ ฌํ ์ ์์ต๋๋ค.
โ๏ธ age๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ, name์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ
from operator import itemgetter
stu_sorted = sorted(student, key = itemgetter('age','name'))
'''
[ {'name':'park', 'age' : 10},
{'name':'lee', 'age' : 13},
{'name':'kim', 'age' : 20},
{'name':'choi', 'age' : 25},
{'name':'park', 'age' : 25},
{'name':'lee', 'age' : 33} ]
'''
๋ฆฌ์คํธ์ ๋์ ๋๋ฆฌ๋ฅผ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ๋ค๋ค๋ดค๋๋ฐ์.
itemgetter, lambda๋ฅผ ์ด์ฉํ๋ฉด ์ข ๋ ๋ค์ํ๊ฒ ์ ๋ ฌ ๋ฌธ์ ์ ํ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค : - )
'๐ Algorithm > ๐ Python ๋ฌธ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ด์ฌ์ ํ์ด์ฌ ๋ต๊ฒ (0) | 2020.12.30 |
---|---|
๋ฆฌ์คํธ(List) (1) | 2020.12.28 |
ํํ(Tuple) (0) | 2020.12.28 |