리스트 메서드
메서드 | 설명 |
append(값) | 리스트 끝에 값을 추가, 리스트[len(리스트):] = [값]과 같음 |
append(리스트) | 리스트를 넣으면 리스트 안에 리스트가 들어감 |
extend(리스트) | 리스트 끝에 다른 리스트 연결, 리스트[len(리스트):] = [값, 값]과 같음 |
insert(인덱스, 값) | 리스트의 특정 인덱스에 값을 추가 |
pop() | 리스트의 마지막 값을 삭제한 뒤 삭제한 값을 반환 |
pop(인덱스) | 인덱스를 지정하면 해당 인덱스의 값을 삭제한 뒤 삭제한 값을 반환, del 리스트[인덱스]와 같음 |
remove(값) | 리스트에서 특정 값을 삭제 |
index(값) | 리스트에서 특정 값의 인덱스를 구함 |
count(값) | 리스트에서 특정 값의 개수를 구함 |
reverse() | 리스트에서 값의 순서를 반대로 뒤집음 |
sort() | 리스트의 값을 작은 순서대로 정렬(오름차순) |
sort(reverse=True) | reverse=True는 큰 순서대로 정렬(내림차순) |
clear() | 리스트의 모든 값을 삭제, del a[:]와 같음 |
copy() | 리스트를 복사하여 새 리스트 생성 |
1. 리스트 조작하기
1) 리스트에 요소 추가하기
리스트의 대표적인 기능이 바로 요소 추가입니다. 다음과 같이 리스트에 요소를 추가하는 메서드는 3가지가 있습니다.
- append: 요소 하나를 추가
- extend: 리스트를 연결하여 확장
- insert(인덱스, 요소) : 특정 인덱스에 요소 추가
>>> a = [10, 20, 30]
>>> a.append(500)
>>> a
[10, 20, 30, 500]
>>> len(a)
4
>>> a = [10, 20, 30]
>>> a.append([500, 600])
>>> a
[10, 20, 30, [500, 600]]
>>> len(a)
4
>>> a = [10, 20, 30]
>>> a.extend([500, 600])
>>> a
[10, 20, 30, 500, 600]
>>> len(a)
5
>>> a = [10, 20, 30]
>>> a.insert(2, 500)
>>> a
[10, 20, 500, 30]
>>> len(a)
4
- insert(0, 요소): 리스트의 맨 처음에 요소를 추가
- insert(len(리스트), 요소): 리스트 끝에 요소를 추가
>>> a = [10, 20, 30]
>>> a.insert(0, 500)
>>> a
[500, 10, 20, 30]
>>> a = [10, 20, 30]
>>> a.insert(len(a), 500)
>>> a
[10, 20, 30, 500]
2) 리스트에서 요소 삭제하기
- pop: 마지막 요소 또는 특정 인덱스의 요소를 삭제
- remove: 특정 값을 찾아서 삭제
>>> a = [10, 20, 30]
>>> a.pop()
30
>>> a
[10, 20]
>>> a = [10, 20, 30]
>>> a.pop(1)
20
>>> a
[10, 30]
사실 pop 대신 del을 사용해도 상관없습니다.
>>> a = [10, 20, 30]
>>> del a[1]
>>> a
[10, 30]
>>> a = [10, 20, 30]
>>> a.remove(20)
>>> a
[10, 30]
만약 리스트에 같은 값이 여러 개 있을 경우 처음 찾은 값을 삭제합니다.
>>> a = [10, 20, 30, 20]
>>> a.remove(20)
>>> a
[10, 30, 20]
리스트로 스택과 큐 만들기
지금까지 알아본 리스트의 메서드로 스택(stack)과 큐(queue)를 만들 수 있습니다. 다음과 같이 append와 pop을 호출하는 그림을 90도 돌리면 스택의 모습이 됩니다.
여기서 pop() 대신 pop(0)을 사용하면 큐가 됩니다.
파이썬에서 스택은 리스트를 그대로 활용해도 되지만, 큐는 좀 더 효율적으로 사용할 수 있도록 덱(deque, double ended queue)이라는 자료형을 제공합니다. 덱은 양쪽 끝에서 추가/삭제가 가능한 자료 구조입니다.
deque(반복가능한객체)
>>> from collections import deque # collections 모듈에서 deque를 가져옴
>>> a = deque([10, 20, 30])
>>> a
deque([10, 20, 30])
>>> a.append(500) # 덱의 오른쪽에 500 추가
>>> a
deque([10, 20, 30, 500])
>>> a.popleft() # 덱의 왼쪽 요소 하나 삭제
10
>>> a
deque([20, 30, 500])
deque의 append는 덱의 오른쪽에 요소를 추가하고, popleft는 덱의 왼쪽 요소를 삭제합니다.
반대로 appendleft는 덱의 왼쪽에 요소를 추가하고, pop으로 덱의 오른쪽 요소를 삭제할 수도 있습니다.
3) 리스트에서 특정 값의 인덱스 구하기
index(값)은 리스트에서 특정 값의 인덱스를 구합니다. 이때 같은 값이 여러 개일 경우 처음 찾은 인덱스를 구합니다(가장 작은 인덱스).
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.index(20)
1
4) 특정 값의 개수 구하기
count(값)은 리스트에서 특정 값의 개수를 구합니다.
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.count(20)
2
5) 리스트의 순서를 뒤집기
reverse()는 리스트에서 요소의 순서를 반대로 뒤집습니다.
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.reverse()
>>> a
[40, 20, 15, 30, 20, 10]
6) 리스트의 요소를 정렬하기
- sort() 또는 sort(reverse=False): 리스트의 값을 작은 순서대로 정렬(오름차순)
- sort(reverse=True): 리스트의 값을 큰 순서대로 정렬(내림차순)
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()
>>> a
[10, 15, 20, 20, 30, 40]
sort 메서드와 sorted 함수 / reverse메소드와 reversed함수
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort() # a의 내용을 변경하여 정렬
>>> a
[10, 15, 20, 20, 30, 40]
>>> b = [10, 20, 30, 15, 20, 40]
>>> sorted(b) # 정렬된 새 리스트를 생성
[10, 15, 20, 20, 30, 40]
7) 리스트의 모든 요소를 삭제하기
>>> a = [10, 20, 30]
>>> a.clear()
>>> a
[]
>>> a = [10, 20, 30]
>>> del a[:]
>>> a
[]
8) 리스트를 슬라이스로 조작하기
>>> a = [10, 20, 30]
>>> a[len(a):] = [500]
>>> a
[10, 20, 30, 500]
>>> a = [10, 20, 30]
>>> a[len(a):] = [500, 600]
>>> a
[10, 20, 30, 500, 600]
'BASIC' 카테고리의 다른 글
리스트 반복문 (1) | 2023.10.09 |
---|---|
리스트의 할당과 복사 알아보기 (0) | 2023.10.09 |
for 반복문 / while 반복문 / 무한Loop /break, continue (1) | 2023.10.02 |
조건문 (0) | 2023.10.02 |
sequence자료형 (0) | 2023.09.29 |
댓글