알고리즘 문제를 풀면서 각 자료형의 내장함수를 정리해야겠다는 생각이 들었습니다.
생각이 난 김에 자료형별 내장함수들에 대해 정리를 시작해보려고 합니다.
우선 리스트 자료형의 내장함수부터 알아보겠습니다.
append
append(x)
a = [1, 2, 3, 4]
a.append(5)
print(a) # [1, 2, 3, 4, 5]
a.append([10, 20])
print(a) # [1, 2, 3, 4, 5, [10, 20]]
- 원본 리스트를 변경합니다.
- 새로운 리스트를 리턴하지 않기 때문에 변수에 따로 할당하지 않아도 됩니다.
리스트의 append() 함수는 리스트 마지막에 원소 x를 추가합니다.
참고로 리스트에는 어떠한 자료형도 추가할 수 있습니다.
extend
extend(x)
a = [1, 2, 3, 4]
a.extend(5) # TypeError: 'int' object is not iterable
a.extend([5, 6])
# a += [5, 6]과 같은 의미입니다.
print(a) # [1, 2, 3, 4, 5, 6]
a.extend((7, 8))
# a += (7, 8)과 같은 의미입니다.
print(a) # [1, 2, 3, 4, 5, 6, 7, 8]
- 원본 리스트를 변경합니다.
- 새로운 리스트를 리턴하지 않기 때문에 변수에 따로 할당하지 않아도 됩니다.
리스트의 extend() 함수 또한 리스트 마지막에 원소 x를 추가합니다.
이때 원소 x의 값으로 iterable 객체를 전달할 수 있습니다.
append() 함수와 비슷해보이지만 차이점이 존재합니다.
append() 함수는 원소 x를 전달 받은 형태 그대로를 추가하지만 extend 함수는 전달 받은 iterable 객체를 풀어서 추가합니다.
리스트를 전달 받든 튜플을 전달 받든 괄호를 벗겨내고 그 안에 원소를 리스트에 추가하는 식입니다.
insert
insert(a, b)
a = [1, 2, 3, 4]
# 리스트 마지막에 원소를 추가합니다.
a.insert(len(a), 5)
print(a) # [1, 2, 3, 4, 5]
a.insert(1, 777)
print(a) # [1, 777, 2, 3, 4, 5]
a.insert(1, [100, 200])
print(a) # [1, [100, 200], 777, 2, 3, 4, 5]
- 원본 리스트를 변경합니다.
- 새로운 리스트를 리턴하지 않기 때문에 변수에 따로 할당하지 않아도 됩니다.
리스트의 insert() 함수도 리스트에 원소를 추가합니다.
다만 앞서 살펴본 append, extend 함수와는 달리 리스트의 특정 인덱스 a 이전에 원소 b를 추가합니다.
remove
remove(x)
a = [1, 4, 7, 1, 2, 3, 2]
a.remove(1)
print(a) # [4, 7, 1, 2, 3, 2]
a.remove(2)
print(a) # [4, 7, 1, 3, 2]
# 두 번째 '2'를 삭제하기 위해서는 remove 함수를 1회 더 실행해야 합니다.
a.remove(2)
print(a) # [4, 7, 1, 3]
a.remove(100) # ValueError: list.remove(x): x not in list
- 원본 리스트를 변경합니다.
- 새로운 리스트를 리턴하지 않기 때문에 변수에 따로 할당하지 않아도 됩니다.
리스트의 remove() 함수는 리스트에 첫 번째로 등장하는 원소 x를 삭제합니다.
동일한 원소 x가 리스트에 3개 존재하는 경우에 모든 x를 제거하기 위해서는 remove() 함수를 3번 실행해야 합니다.
하지만 원소 x가 리스트에 존재하지 않으면 ValueError가 발생합니다.
pop
pop(x)
a = [1, 2, 3, 4, 5]
# 인자를 전달하지 않으면 마지막 원소를 리턴한 뒤 이를 삭제합니다.
b = a.pop()
print(b) # 5
print(a) # [1, 2, 3, 4]
c = a.pop(len(a)) # IndexError: pop index out of range
d = a.pop(len(a) - 1)
print(d) # 4
print(a) # [1, 2, 3]
- 원본 리스트를 변경합니다.
- 리스트의 x 인덱스에 위치한 원소를 리턴합니다. 따라서 리턴하는 원소를 새로운 변수에 할당할 수 있습니다.
리스트의 pop() 함수 또한 리스트의 x 인덱스에 위치한 원소를 삭제합니다.
인자를 전달하지 않으면 마지막 원소를 리턴하고 해당 원소를 삭제합니다.
clear
a = [1, 2, 3, 4, 5]
a.clear()
print(a) # []
- 원본 리스트를 변경합니다.
- 새로운 리스트를 리턴하지 않기 때문에 변수에 따로 할당하지 않아도 됩니다.
리스트의 clear() 함수는 리스트의 모든 원소를 삭제합니다.
index
index(x)
a = [1, 2, 3, 1, 5, 2, 4]
b = a.index(1)
print(b) # 0
print(a) # [1, 2, 3, 1, 5, 2, 4]
c = a.index(100) # ValueError: 100 is not in list
- 원본 리스트를 변경하지 않습니다. 리스트 원소를 추가하거나 삭제하지 않기 때문입니다.
- 인덱스 값을 리턴합니다. 따라서 리턴하는 인덱스 값을 새로운 변수에 할당할 수 있습니다.
리스트의 index() 함수는 리스트에 첫 번째로 등장하는 원소 x의 인덱스를 리턴합니다.
리스트에 존재하지 않는 값을 찾으려고 하면 ValueError가 발생합니다.
count
count(x)
a = [1, 4, 2, 5, 7, 5, 5, 1, 2, 3]
b = a.count(1)
print(b) # 2
c = a.count(100)
print(c) # 0
- 원본 리스트를 변경하지 않습니다. 리스트 원소를 추가하거나 삭제하지 않기 때문입니다.
- 리스트 내 원소 x의 개수를 리턴합니다. 따라서 리턴값을 새로운 변수에 할당할 수 있습니다.
리스트의 count() 함수는 리스트에 존재하는 원소 x의 개수를 리턴합니다.
리스트에 존재하지 않는 값의 개수를 찾으려고 하면 0을 리턴합니다.
reverse
a = [1, 5, 3, 6, 2, 4, 1]
a.reverse()
print(a) # [1, 4, 2, 6, 3, 5, 1]
- 원본 리스트를 변경합니다.
- 새로운 리스트를 리턴하지 않기 때문에 변수에 따로 할당하지 않아도 됩니다.
리스트의 reverse() 함수는 리스트를 역순으로 뒤집습니다.
정렬은 일어나지 않습니다.
reversed
a = [1, 5, 3, 6, 2, 4, 1]
print(list(reversed(a))) # [1, 4, 2, 6, 3, 5, 1]
print(a) # [1, 5, 3, 6, 2, 4, 1]
- 원본 리스트를 변경하지 않습니다.
- 역순으로 된 새로운 리스트를 리턴합니다. 따라서 리턴값을 새로운 변수에 할당할 수 있습니다.
reversed() 메서드는 리스트 자료형의 메서드는 아니고 파이썬에서 제공하는 built-in 함수입니다.
리스트 뿐만 아니라 문자열도 인자로 전달 받을 수 있습니다.
sort
sort(*, key, reverse)
a = [1, 5, 3, 6, 2, 4, 1]
a.sort()
print(a) # [1, 1, 2, 3, 4, 5, 6]
a.sort(reverse=True)
print(a) # [6, 5, 4, 3, 2, 1, 1]
- 원본 리스트를 변경합니다.
- 새로운 리스트를 리턴하지 않기 때문에 변수에 따로 할당하지 않아도 됩니다.
리스트의 sort() 함수는 리스트 안에 있는 원소를 오름차순으로 정렬합니다.
reverse 매개변수의 디폴트 값은 False이기 때문에 기본적으로 오름차순으로 정렬합니다.
하지만 reverse 매개변수 값으로 True를 전달하면 리스트를 내림차순으로 정렬할 수 있습니다.
sorted
sorted(iterable, /, *, key, reverse)
a = [1, 5, 3, 6, 2, 4, 1]
b = sorted(a)
print(b) # [1, 1, 2, 3, 4, 5, 6]
print(a) # [1, 5, 3, 6, 2, 4, 1]
c = sorted(a, reverse=True)
print(c) # [6, 5, 4, 3, 2, 1, 1]
- 원본 리스트를 변경하지 않습니다.
- 정렬된 새로운 리스트를 리턴합니다. 따라서 리턴값을 새로운 변수에 할당할 수 있습니다.
sorted() 메서드는 리스트 자료형의 메서드는 아니고 파이썬에서 제공하는 built-in 함수입니다.
인자로 전달받은 iterable 객체를 정렬합니다.
리스트 내장함수인 sort()와 마찬가지로, reverse 매개변수의 디폴트 값은 False이기 때문에 기본적으로 오름차순으로 정렬합니다.
하지만 reverse 매개변수의 값으로 True를 전달하면 리스트를 내림차순으로 정렬할 수 있습니다.
이상으로 파이썬 리스트의 함수들에 대한 정리를 마쳤습니다.
알고리즘 문제를 푸는 경우나 자료형별 메서드를 사용하면서 헷갈리는 경우에 이번에 정리한 내용을 복습해야겠습니다. 👏🏻👏🏻
'파이썬・ML' 카테고리의 다른 글
파이썬 enumerate 내장함수 사용하기 (0) | 2023.05.31 |
---|---|
파이썬 map 내장함수 사용하기 (0) | 2023.05.31 |
파이썬 zip 내장함수 사용하기 (0) | 2023.05.30 |
파이썬 집합 함수 총정리 (0) | 2023.05.30 |
파이썬 UnicodeDecodeError(feat.open함수) (0) | 2023.05.16 |