1. 쓰면서 뿌듯한 기능들

지금까지 배운 리스트, 튜플, 문자열, 딕셔너리, 셋을 통틀어 이터러블(iterable)이라고 부릅니다. 이터러블의 특징은 어떤 값을 연속적으로 꺼낼 수 있다는 점입니다. 위에서 언급한 다섯 가지 자료형들은 모두 for 문을 통해서 원소를 반복할 수 있었습니다.

이번에는 조금 고급 주제를 "살짝" 다뤄보겠습니다. 이터러블에 사용할 수 있는 기능들인데, 실무에서 많이 쓰지만 의외로 사용하기 어려워하는 사람이 많은 기능들입니다. 하나하나 차근차근, 예제와 함께 알아봅시다.

sort/sorted

sort

sort 는 리스트를 제자리에서 수정하는(in-place) 방식입니다. 다시 말해, 새로운 리스트를 생성하지 않고 각 원소의 위치를 바꿔가며 정렬합니다. 하지만 이 방법은 속도가 느리고, 리스트에만 사용할 수 있기 때문에 잘 사용되지 않습니다.

a = [4, 3, 1, 2]
a.sort()
print(a) # [1, 2, 3, 4]

sorted

무조건 정렬이 필요한 경우에는 sorted 를 사용합니다. 모든 이터러블에 대해 정렬을 할 수 있는 sorted 는, 입력으로 받은 값으로부터 새로운 정렬된 리스트를 반환합니다. 먼저 입력으로 리스트를 전달합니다. 결과가 오름차순 정렬이 된 리스트가 리턴되는 것을 알 수 있습니다.

nums = [4, 3, 1, 2]
sorted_nums = sorted(nums)
print(sorted_nums) # [1, 2, 3, 4]

튜플도 동일하게 정렬할 수 있습니다.

nums = (4, 3, 1, 2)
sorted_nums = sorted(nums)
print(sorted_nums) # [1, 2, 3, 4]

딕셔너리의 경우, 키를 기준으로 정렬이 수행됩니다.

nums = {4: "a", 3: "b", 1: "c", 2: "d"}
sorted_nums = sorted(nums)
print(sorted_nums)  # [1, 2, 3, 4]

<aside> 💡 밸류를 기준으로 정렬하는 방법은 뒤에서 다룹니다.

</aside>

셋도 정렬 가능합니다.

nums = {4, 3, 1, 2}
sorted_nums = sorted(nums)
print(sorted_nums) # [1, 2, 3, 4]

마지막으로 문자열은 알파벳 순으로 정렬됩니다.

string = "dcba"
sorted_string = sorted(string)
print(sorted_string)  # ['a', 'b', 'c', 'd']