2015년 5월 25일 월요일

파이썬 리스트의 내장 메소드들

 리스트도 문자열과 동일한 인덱싱과 슬라이싱이 가능하다. 또한 변형 가능(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 와 같은 고급 자료형을 쉽게 구현할 수 있다.


댓글 없음:

댓글 쓰기