안녕하세요 여몽의 눈동자입니다.
오늘은 메서드에 대해 정리해보겠습니다. 파이썬은 객체지향 프로그래밍 (Object Oriented Programming) 언어입니다. 객체지향 프로그래밍이 무엇인지 설명하자면... 새로운 포스팅을 하나 해야할 것 같네요~~~ㅎㅎ. 아주 간단히 설명하자면 특정한 데이터 타입에 한해 특정한 동작을 하는 함수를 묶어서 객체 (object)를 만들고 이 객체들을 마치 레고블럭 처럼 활용해서 (주로 길고 복잡한) 대형 프로그램을 짜는 프로그래밍 철학이라고 보시면 됩니다. (왜 객체지향 프로그래밍이 필요한지 등에 대한 자세한 설명은 생활코딩을 참조하시길...)
어쨌든 여기서 중요한 점은 파이썬에서는 각자의 데이터 타입과 이 데이터 타입에 사용가능한 함수가 묶여있다는 점입니다. 즉 데이터 타입에 할당된 빌트인(built-in) 함수를 메서드(method) 라고 부릅니다.
어떠한 데이터 타입에 사용할 수 있는 메서드의 목록은 dir() 함수를 통해 확인할 수 있습니다.
In [2]: dir(list)
Out[2]:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
메서드를 사용할때는 대상 데이터(변수) 뒤에 마침표를 찍고 메서드 이름을 써줍니다.
이번 포스팅에서는 리스트(List) 데이터 타입에 연계된 메서드 들을 정리하겠습니다.
1. 리스트 메서드 (List Methods)
append(): 리스트의 맨 뒤에 새로운 원소를 하나 붙입니다.
In [4]: friends = ['Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin']
In [5]: friends.append('Jessica')
In [6]: friends
Out[6]: ['Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin', 'Jessica']
clear(): 리스트의 원소를 삭제합니다.
In [10]: friends.clear()
In [11]: friends
Out[11]: []
copy(): 리스트를 복사합니다.
In [12]: friends = ['Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin', 'Simpson']
In [13]: friends2 = friends.copy()
In [14]: friends2
Out[14]: ['Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin', 'Simpson']
count(): 리스트의 내 원소의 갯수를 반환합니다.
In [15]: friends.count('Jane')
Out[15]: 1
In [16]: friends.count('Simpson')
Out[16]: 2
extend(): () 안의 리스트를 원래의 리스트에 이어 붙입니다.
In [19]: friends.extend(friends2)
In [20]: friends
Out[20]:
['Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin', 'Simpson',
'Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin', 'Simpson']
index(): 원소의 인덱스 번호를 반환합니다.
In [21]: friends.index('Natalie')
Out[21]: 3
보시면 friends 리스트에는 Natalie가 2개 포함되어있는데요 중복된 원소가 있는 경우 처음 나타나는 원소의 인덱스 번호를 반환합니다. (리스트 인덱스 번호가 0부터 시작함에 유의)
insert(index, item): 지정된 인덱스 번호에 원소를 삽입합니다.
In [21]: friends = ['Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin']
In [22]: friends.insert(1,'Yuki')
In [23]: friends
Out[23]: ['Jane', 'Yuki', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin']
pop(index): 지정된 인덱스 번호의 원소를 제거하고 그 값을 반환합니다.
In [25]: friends.pop(1)
Out[25]: 'Yuki'
In [26]: friends
Out[26]: ['Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin']
참고로 del() 함수를 이용해서 원소를 제거할 경우 동일한 효과를 얻을 수 있지만 그 값을 반환하지 않는다는 차이가 있습니다.
In [29]: friends = ['Jane', 'Yuki', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin']
In [30]: del friends[1]
In [31]: friends
Out[31]: ['Jane', 'Simpson', 'John', 'Natalie', 'Andrew', 'Oscar', 'Somin']
remove(): 지정된 원소를 제거합니다.
In [32]: friends.remove('John')
In [33]: friends
Out[33]: ['Jane', 'Simpson', 'Natalie', 'Andrew', 'Oscar', 'Somin']
reverse(): 리스트내 원소들의 순서를 반대로 바꿉니다. 원래 리스트 자체에 수정을 가한다는 점에 주의합니다. 즉 friends = friends.reverse() 같은 식의 코딩을 하지 않습니다.
In [34]: friends = ['Jane', 'Simpson', 'Natalie', 'Andrew', 'Oscar', 'Somin']
In [35]: friends.reverse()
In [36]: friends
Out[36]: ['Somin', 'Oscar', 'Andrew', 'Natalie', 'Simpson', 'Jane']
sort(): 리스트내 원소들을 정렬합니다. 숫자는 작은수에서 큰수로, 문자는 a->z 순서로 정렬합니다. reverse 옵션을 True로 설정하면 반대로 정렬할 수도 있습니다.
In [37]: friends.sort()
In [38]: friends
Out[38]: ['Andrew', 'Jane', 'Natalie', 'Oscar', 'Simpson', 'Somin']
In [39]: friends.sort(reverse=True)
In [40]: friends
Out[40]: ['Somin', 'Simpson', 'Oscar', 'Natalie', 'Jane', 'Andrew']
댓글
댓글 쓰기