리스트도 문자열과 동일한 인덱싱과 슬라이싱이 가능하다. 또한 변형 가능(mutable)하기 때문에 mutable sequence에서 공통으로 사용 가능한 연산(덧셈과 곱셈)을 적용할 수 있다. 이 부분은 문자열의 인덱싱/슬라이싱 포스트와 문자열의 덧셈과 곱셈를 참조하기 바란다.


 리스트의 내장 메소들(method)들은 다음 표와 같다.


[표 1] 리스트의 메소드들

리스트 함수

동작

append(x)

x를 리스트의 마지막 요소로 추가한다.

extend(list)

list의 요소로 원 리스트를 확장한다.

insert(i, x)

x를 i번째 위치로 끼워 넣는다.

remove(x)

x와 같은 첫 번째 요소를 삭제한다.

pop()

pop(i)

마지막 요소를 삭제하고 반환한다.

i번째 요소를 삭제하고 반환한다.

clear()

모든 요소를 삭제한다.

index(x)

x와 같은 첫 번째 요소의 인덱스를 반환한다.

count(x)

x와 같은 요소들의 개수를 구한다.

sort()

정렬

reverse()

역순으로 배열

copy()

얕은 복사본을 반환한다.


이 함수들의 사용 예를 들면 다음과 같다.


>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
>>> a.pop()
1234.5
>>> a
[-1, 1, 66.25, 333, 333]


append()함수와 extend()함수는 그 동작에 차이가 있다.


>>> x=list(range(5))
>>> x.append([5.6]) # x의 마지막 요소로 [5,6] 이 들어간다.
[0,1,2,3,4,[5,6]]

>>> x=list(range(5))
>>> x.extend([5.6]) # x의 오른쪽에 [5,6]의 요소를 병합시킨다.
[0,1,2,3,4, 5,6]


그리고 append() 함수와 pop()함수를 이용하면 리스트를 스택(stack)으로 운영할 수 있다.


>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]


이와 같이 리스트의 메쏘드를 이용하면 stack/queue 와 같은 고급 자료형을 쉽게 구현할 수 있다.



Posted by 살레시오
,