0. Introduction
List 자료형은 sequence형이고, mutable이기 때문에
- 순서 존재한다. => len, index, slicing 이 가능
- 수정, 삭제가 가능하다.
- 중복이 가능하다.
다른 언어에서는 배열이라 하는데 알고리즘을 풀기 위해서 굉장히 중요한 자료 형태다.
1. List 선언
|
|
2. List indexing, slicing
list도 string처럼 sequence 형이기 때문에, len, index, slicing을 사용할 수 있다.
- indexing: 원하는 데이터를 꺼내는 과정
|
|
❗ 문자열을 list로 바꾸면 최소 단위로 쪼갠다.
- slicing: 같은 데이터 타입으로, 원하는 부분의 데이터를 뽑아내는 것
|
|
3. List 연산
|
|
4. List 함수
|
|
결론
- a.append():
끝에
데이터를 삽입한다.매달은다
- a.sort(): 데이터를
정렬
한다. - a.reverse(): 데이터 방향을
뒤집는다
.- 반환값이 없고, 뒤집어져서 객체에 바로 저장된다. 그러므로, 객체 출력을 따로 해야 한다.
- reversed는 method가 아닌 함수다. 그래서 인자로 리스트를 입력한다.
- a.index(): 괄호 값의 첫 번째
index
를 알려준다. - a.insert(x,y): index x 번째 있는 자리에 y 값을
삽입
한다. - a.count(): 원하는 값의
갯수를 세는
method- int를 반환한다.
- a.extend(): 괄호 안의 값을 list에
연장
한다.- reverse()처럼 반환값이 없고, 객체에 바로 저장된다.
5. List 수정, 삭제
5.1 slicing과 index를 사용하여 수정, 삭제하는 방법
수정하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
> c = [70, 75, 80 ,85] ## 수정하기 # index 번호로 접근하여 수정 > c[0] = 4 > print(c) [4, 75, 80, 85] # insert 되는 결과 > c[1:2] = ['a', 'b', 'c'] > print(c) [4, 'a', 'b', 'c', 80, 85] # 하지만 slicing이 아닌 index로 명령하면 선언한 value 그대로 원소가 된다. > c[1] = ['a', 'b', 'c'] > print(c) [70, ['a', 'b', 'c'], 80, 85] # list 자체가 하나의 원소로 list에 들어갔다. # slicing으로 list를 원소로 넣고 싶으면 다음과 같이 한다. > c[1:2] = [['a', 'b', 'c']] > print(c) [70, ['a', 'b', 'c'], 80, 85] ## list 안에 list가 들어간 걸 `중첩`이라 한다.
삭제하기
1 2 3 4 5 6 7 8 9 10
# 빈 값을 선언하는 것이 삭제하는 걸 의미한다. # c[1], c[2] 원소가 삭제된다. > c = [70, 75, 80 ,85] > c[1:3] = [] > print(c) [70, 85] > c[0] = [] [[], 85]
즉, slicing으로 수정 및 삭제를 하면 list 중괄호 안의 성분들이 원본 객체 index에 들어간다.
하지만, indexing으로 하면 할당된 괄호 자체도 다 들어간다.
5.2 함수를 사용하여 삭제하는 방법: remove, pop, del
remove()
: 삭제할 데이터 값을 직접 지정한다.1 2 3 4 5
> c = [70, 75, 80 ,85] > c.remove(70) > print(c) [75, 80, 85]
pop()
: 마지막 원소를 뽑아내고, 나머지로 만든다.1 2 3 4
> c = [70, 75, 80 ,85] > print('c - ', c.pop()) c - 85
del c[index]
: index를 기준으로 데이터를 삭제하기 때문에, 지울려는 데이터가 몇 번째인지 알아야 한다.- 데이터가 많아지면, 세기가 어렵다. 그럴 때는 위에 remove를 사용한다.
1 2 3 4 5
> c = [70, 75, 80 ,85] > del c[1] > print(c) 75
pop( )
stack
자료 구조에서는 마지막에 들어온 애가 가장 먼저 나간다.- Last In, First Out로 LIFO라 한다.
- 예1) 음식을 접시에 담을 때, 마지막에 쌓은 접시를 꺼내서 사용한다.
- 예2) 웹 브라우저를 뒤로 가기 버튼을 누르면, 마지막 페이지가 먼저 나온다.
- 이런 자료 구조에서 많이 사용되는 method가
pop
입니다.
Queue
는 스택과 반대로 가장 처음에 들어온 걸 빼는 구조로, First In, First Out로 FIFO라 한다.
반복문과
pop()
을 활용하여 제거하는 방법도 있다.따로 break 를 사용하지 않아도, a가 비워지면 끝난다.
1 2 3 4 5
> a = [8, 7, 7, 5, 4, 3] > while a: > data = a.pop() > print(data)