Python
[Python] 리스트(List)의 여러 메소드
NaDuck
2023. 11. 16. 21:42
목차
1. 리스트(List)란?
2. 리스트의 선언
3. 아이템 추가
4. 아이템 삭제
5. 리스트 슬라이싱 (List slicing)
6. 특정 아이템의 인덱스 찾기
7. 리스트 정렬
리스트(List)란?
- 다른 언어와 마찬가지로 여러 개의 데이터들을 순서대로 나열하여 인덱스로 접근할 수 있는 자료구조, 즉 배열을 파이썬에선 리스트라고 표현한다.
- C언어와 같은 정적 배열이 아닌, 동적 배열이기 때문에 아이템을 쉽게 추가하거나 삭제하기 용이하다.
1. 선언
# 정수형 리스트
my_list1 = [1, 30, 12]
# boolean형 리스트
my_list2 = [True, True, False]
# string형 리스트
my_list3 = ['duck', 'hello', 'python']
# 여러 타입의 데이터들로 만들 수 있다.
my_list4 = ["나오리", True, 100]
2. 아이템 추가
- 특정 인덱스 위치에 추가하고 싶다면
insert
를, - 리스트의 가장 마지막에 추가하고 싶다면
append
를 사용하는 편이다.
(1) insert
메소드
my_list = [1, 2, 3]
# 리스트명.insert(인덱스, 값): 인덱스에 해당 값을 삽입한다.
my_list.insert(1, 100)
print(my_list) # [1, 100, 2, 3]
(2) append
메소드
my_list = [12, 49, 22]
# 리스트 마지막에 아이템을 추가할 때 사용한다.
my_list.append(100)
print(my_list) # [1, 2, 3, 100]
3. 아이템 수정
인덱스로 접근해 해당 리스트의 아이템을 수정한다.
my_list = [2, 'duck', 30]
my_list[0] = '안녕하세요'
my_list[1] = 'Python 좋아'
print(my_list) # ['안녕하세요', 'Python 좋아', 30]
4. 아이템 삭제
(1) del
메소드
파라미터로 삭제할 위치의 인덱스를 지정한다.
my_list = [1, 2, 3, 4, 5]
# my_list의 3번 인덱스의 원소를 삭제하고, 뒤의 원소들이 앞으로 한 칸씩 당겨진다.
del my_list[3]
print(my_list) # [1, 2, 3, 5]
(2) pop
메소드
파라미터로 삭제할 위치의 인덱스를 지정할 수도 있고,
아무것도 넘겨주지 않으면 배열의 가장 마지막 아이템을 삭제한다.
a = [1, 2, 3, 4, 5]
a.pop(0)
print(a) # [2, 3, 4, 5]
# 리스트의 마지막 아이템을 삭제한다.
a.pop()
print(a) # [1, 2, 3, 4]
(3) remove
메소드
파라미터로 삭제할 아이템 값을 지정한다.
✅ 리스트에 같은 값의 아이템이 여러 개 있다면 맨 앞의 아이템만 삭제된다.
✅ 리스트에 해당 값이 없을 경우 에러가 발생하므로 사용에 주의하자
my_list = ['a', 'b', 'c', 'd', 'e']
my_list.remove('b')
print(my_list) # ['a', 'c', 'd', 'e']
# 리스트에 존재하지 않는 원소를 삭제하려면 에러가 난다.
my_list.remove('q') # ❌
'''
Traceback (most recent call last):
File "...", line 9, in <module>
my_list.remove('q')
ValueError: list.remove(x): x not in list
'''
# 아이템이 여러 개라면 최초 하나만 삭제한다.
my_list = ['a', 'a', 'a']
my_list.remove('a')
print(my_list) # ['a', 'a']
5. 리스트 슬라이싱 (list slicing)
list[start : stop : step]
start
, stop
, step
을 이용해 리스트를 다양하게 슬라이싱 할 수 있다.
✅ 원본 리스트는 영향을 받지 않고, 슬라이싱한 결과 리스트를 따로 리턴한다.
my_list = [1, 2, 3, 4, 5]
# 인덱스 1 ~ 3까지 슬라이싱
print(my_list[1:4]) # [2, 3, 4]
# start를 생략하면 자동으로 start = 0
# 인덱스 0 ~ 1까지 슬라이싱
print(my_list[:2]) # [1, 2]
# end를 생략하면 자동으로 end = 리스트의 마지막
# 인덱스 1 ~ 끝까지 슬라이싱
print(my_list[1:] # [2, 3, 4, 5]
# start ~ end까지 2칸씩 띄우기
print(my_list[::2]) # [1, 3, 5]
✅ 리스트 슬라이싱으로 reversed
리스트를 쉽게 구할 수 있다.
my_list = [1, 2, 3, 4, 5]
print(my_list[::-1]) # [5, 4, 3, 2, 1]
6. 아이템으로 특정 인덱스 찾기
index
메소드 사용
my_list = ['a', 'b', 'c', 'd', 'e']
print(my_list.index('c')) # 2
# 존재하지 않는 원소를 찾으려고 하면 에러가 발생한다.
print(my_list.index('q')) # Error ❌
'''
Traceback (most recent call last):
File "...", line 7, in <module>
print(my_list.index('q'))
ValueError: 'q' is not in list
'''
index(value, start, end)
: start
~ end
사이에 있는 value
의 인덱스를 리턴한다.
my_list = ['a', 'b', 'c', 'd', 'e', 'a', 'b']
# 2 ~ 5번 인덱스 내에서 'a' 찾기
print(my_list.index('a', 2, 6)) # 5
7. 리스트 오름차순 / 내림차순 정렬하기
(1) 리스트명.sort()
✅ 기본적으로 오름차순 정렬을 한다.
✅ 내림차순 정렬을 하고 싶다면 파라미터로 reverse=True
옵션을 추가한다.
✅ 원본 리스트가 정렬된 상태를 유지한다.
# (1)
my_list = [10, 3, 1000, 35, -10]
my_list.sort()
print(my_list)
# [-10, 3, 10, 35, 1000]
# (2)
my_list = [0.3, 3.14, 104.1, 30.9]
my_list.sort()
print(my_list)
# [0.3, 3.14, 30.9, 104.1]
# (3)
my_list = [10, -1.3, 1000.0, 31, 15.5]
my_list.sort()
print(my_list)
# [-1.3, 10, 15.5, 31, 1000.0]
# (4)
my_list = ['a', 'd', 'c', 'b']
my_list.sort()
print(my_list)
# ['a', 'b', 'c', 'd']
# (5) 사전순 정렬
my_list = ['abc', 'abcde', 'aaa', 'a', 'abbbb']
my_list.sort()
print(my_list2)
# ['a', 'aaa', 'abbbb', 'abc', 'abcde']
# (6)
my_list = ['가', '다', '나', '라']
my_list.sort()
print(my_list)
# ['가', '나', '다', '라']
# (7) 유니코드 코드값 순으로 정렬
my_list = ['나', 'aaaaa', '가', '다', 'a', 'aaa']
my_list.sort()
print(my_list)
# ['a', 'aaa', 'aaaaa', '가', '나', '다']
# (8) Error ❌
my_list = ['a', 14, 109.4, 'abc']
my_list.sort()
print(my_list) # ❌ 숫자와 문자열은 비교 불가능
'''
Traceback (most recent call last):
File "...", line 42, in <module>
my_list.sort()
TypeError: '<' not supported between instances of 'int' and 'str'
'''
리스트명.sort(reverse = True)
my_list = [15, 400, -12, 3]
my_list.sort(reverse=True)
print(my_list) # 결과: [400, 15, 3, -12]
(2) sorted()
함수
✅ sort()
메소드와 달리 원본 리스트를 바꾸지 않고, 정렬된 새로운 리스트를 반환한다.
✅ 파라미터로 정렬할 리스트와 내림차순 정렬 reverse = True
옵션을 지정할 수 있다.
my_list = [5, 11, 100, 1, -3]
sorted_my_list = sorted(my_list)
print(sorted_my_list) # [-3, 1, 5, 11, 100]
sorted(list, reverse=True)
my_list = [5, 11, 100, 1, -3]
reverse_sorted = sorted(my_list, reverse=True)
print(reverse_sorted) # [100, 11, 5, 1, -3]