지금까지 파이썬의 기본 자료형인 불리언, 정수형, 실수형 그리고 문자열에 대해 정리했습니다. 이제부터 고급 자료형인 리스트(list), 튜플(tuple), 딕셔너리(dictionary), 셋(set)에 대해 정리해 볼 예정입니다. 먼저 리스트(list)와 튜플(tuple) 대해 알아보도록 하죠.
리스트(list)
리스트는 파이썬 자료형 중의 하나로, 문자열, 숫자형 등을 포함하는 집합이라고 볼 수 있습니다.
리스트 생성
리스트명 = [요소1, 요소2, 요소3, 요소4, …]
1 2 3 4 |
listone = [1, 2, 3, 4] listtwo = ['one', 'two', 'three', 'four'] listthree = ['1', 2, 'three', 4] listfour = [1, ['two', 3], 'four'] |
이렇게, 숫자로만 구성, 문자로만 구성, 혼합해서 구성, 또 리스트 속에 리스트를 포함시킬 수 있습니다.
인덱싱, 슬라이싱
문자열처럼 인덱싱과 슬라이싱이 가능합니다.
1 2 3 4 5 6 7 8 9 |
>>> list = ['one', 'two', 'three', 'four'] >>> list[0] 'one' >>> list[3] 'four' >>> list[:2] ['one', 'two'] >>> list[1:] ['two', 'three', 'four'] |
대괄호([]) 안에 오는 숫자는, 리스트의 오프셋 번호로 문자열과 같이 0부터 시작합니다.
[0]은 첫번째 요소, [1]은 두번째 .. 이렇게 사용할 수 있으며, 음수 오프셋
사용이 역시 가능하여, 마지막 요소는 [-1]이 됩니다.
위 예시와 같이 문자열처럼 슬라이싱
이 가능합니다.
리스트 속 리스트 인덱싱, 슬라이싱
1 2 3 4 5 6 7 8 |
>>> list = ['zero', ['one', 'two', 'three', 'four'], 'five', 'six'] >>> list = ['zero', ['one', 'two', 'three', 'four'], 'five', 'six'] >>> list[1] ['one', 'two', 'three', 'four'] >>> list[1][1] 'two' >>> list[1][1:3] ['two', 'three'] |
인덱싱으로 리턴시킨 결과도 리스트이기 떄문에 한번 더 인덱싱 및 슬라이싱이 가능합니다.
리스트 결합, 복제
결합
1 2 3 4 |
>>> list1 = [1,2,3] >>> list2 = ['four', 'five', 'six'] >>> list1 + list2 [1, 2, 3, 'four', 'five', 'six'] |
+
기호로 두 개 이상의 리스트의 결합이 가능합니다.
복제
1 2 3 4 5 6 |
>>> list1 *3 [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> list2 *2 ['four', 'five', 'six', 'four', 'five', 'six'] >>> list1 *3 + list2 *2 [1, 2, 3, 1, 2, 3, 1, 2, 3, 'four', 'five', 'six', 'four', 'five', 'six'] |
*
기호로 리스트를 반복시킬 수 있습니다.
리스트 값 변경
리스트에 새로운 값
을 대입하여 리스트를 변경시킬 수 있습니다.
또, 슬라이싱을 통해 여러 연속하는 값
을 변경할 수도 있습니다.
1 2 3 4 5 6 7 |
>>> list = [1,2,3,4] >>> list[2] = 100000 >>> list [1, 2, 100000, 4] >>> list[2:3] = ['python', 'is fun'] >>> list [1, 2, 'python', 'is fun', 4] |
리스트 함수
리스트(list) 에 사용가능한 함수들이 있습니다. 하나씩 정리해 보겠습니다.
sort()
정렬시키는 함수입니다. 오름차순으로 정렬되며, 숫자는 0,1,2,3… 알파벳은 a,b,c,d… 순으로 정렬됩니다.
1 2 3 4 5 6 7 8 |
>>> list1 = [2, 100, 47, 3, 20] >>> list1.sort() >>> list1 [2, 3, 20, 47, 100] >>> list2 = ['e', 'f', 'a', 'v', 'h', 'b'] >>> list2.sort() >>> list2 ['a', 'b', 'e', 'f', 'h', 'v'] |
reverse()
리스트를 뒤집는 함수입니다. 마지막 요소가 첫번째 요소가 되고, 첫번째 요소가 마지막 요소가 됩니다.
1 2 3 4 |
>>> list1 = [2, 100, 47, 3, 20] >>> list1.reverse() >>> list1 [20, 3, 47, 100, 2] |
append()
리스트의 마지막 요소 뒤로 새로운 요소를 추가합니다.
단일요소는 물론, 리스트를 추가시킬 수 있습니다.
1 2 3 4 5 6 7 |
>>> list1 = [1,2,3,4] >>> list1.append('a') >>> list1 [1, 2, 3, 4, 'a'] >>> list1.append(['b','c']) >>> list1 [1, 2, 3, 4, 'a', ['b', 'c']] |
remove()
괄호 안의 요소를 리스트에서 찾아 가장 앞선 인덱스부터 하나만 제거합니다.
1 2 3 4 5 6 7 8 9 10 |
>>> list1 = [1, 2, 3, 4, 1, 'python', 'fun'] >>> list1.remove(1) >>> list1 [2, 3, 4, 1, 'python', 'fun'] >>> list1.remove(1) >>> list1 [2, 3, 4, 'python', 'fun'] >>> list1.remove('python') >>> list1 [2, 3, 4, 'fun'] |
이처럼 list1.remove(1)
을 실행하면, 첫번째 1
이 제거됩니다. 다시 한번 실행하면, 두번째 1
이 제거됩니다.
insert()
원하는 위치에 새로운 요소를 추가할 수 있습니다.
insert(x,y)
로 선언하는데, x에는 인덱스가, y에는 요소값을 입력합니다.
1 2 3 4 |
>>> list1 = [4, 3, 2, 1, 7] >>> list1.insert(4, 'a') >>> list1 [4, 3, 2, 1, 'a', 7] |
오프셋4 위치에 문자열 ‘a’를 추가하는 예제입니다.
pop()
원하는 위치의 요소를 리턴함과 동시에, 제거합니다.
pop! 하고 뽑아버린다고 생각하면 됩니다..ㅎㅎ
1 2 3 4 5 |
>>> list1 = [2, 3, 5, 6] >>> list1.pop(2) 5 >>> list1 [2, 3, 6] |
이처럼 [2]위치의 요소인 5를 리턴하였고, 다시 리스트를 확인해보면 5가 제거되어 있음을 확인할 수 있습니다.
index()
내가 찾는 요소값이 위치한 인덱스를 리턴합니다.
1 2 3 4 5 |
>>> list1 = ['a', 'b', 'c', 'd', 'e'] >>> list1.index('c') 2 >>> list1.index('a') 0 |
위의 예에서 요소 ‘c’는 인덱스 2위치에, 요소 ‘a’는 인덱스 0 위치에 있음을 알 수 있습니다.
count()
특정 요소가 리스트 안에 몇개 존재 하는지 찾을 수 있습니다.
1 2 3 4 5 6 7 |
>>> list1 = [2, 4, 6, 7, 2, 3, 1, 1, 1] >>> list1.count(2) 2 >>> list1.count(8) 0 >>> list1.count(1) 3 |
존재여부 확인 in
특정 요소가 리스트 안에 있는지 확인합니다. 결과가 True나 False로 리턴됩니다.
1 2 3 4 5 |
>>> list = ['a', 'b', 'c', 'd', 'e'] >>> 'c' in list True >>> 'r' in list False |
리스트 안에 ‘c’요소는 있기 때문에 True가, ‘r’요소는 없기 때문에 False 가 리턴되었습니다.
튜플
리스트와 거의 유사한데, 리스트와 차이점은
- 리스트는 값 변경 가능하지만 튜플은 불가능
- 리스트는 [], 튜플은 ()
이다.
튜플 생성
1 2 3 4 5 6 7 8 9 |
>>> tuple1 = () >>> tuple1 () >>> tuple2 = ('a') >>> tuple2 'a' >>> tuple3 = ('a',2,3) >>> tuple3 ('a', 2, 3) |
이처럼 튜플은 () 로 둘러쌓이며, 리스트와 같이 숫자, 문자 모두 요소로 포함 가능합니다.
특이한 점은 괄호를 생략해도
튜플로 인식하고 생성된다는 것입니다.
1 2 3 4 5 |
>>> test = 2, 3 >>> test (2, 3) >>> type(test) <class 'tuple'> |
괄호를 생략 하더라도 튜플이 생성됩니다.
튜플 인덱싱, 슬라이싱
1 2 3 4 5 |
>>> tuple = (1,2,3,'a','b','c') >>> tuple[2] 3 >>> tuple[3:6] ('a', 'b', 'c') |
튜플 결합, 복제
1 2 3 4 5 6 |
>>> tuple1 = ('a', 'b', 'c') >>> tuple2 = ('d', 'e', 'f') >>> tuple1 + tuple2 ('a', 'b', 'c', 'd', 'e', 'f') >>> tuple1 *2 ('a', 'b', 'c', 'a', 'b', 'c') |
마무리
여기까지 리스트(list) 와 튜플(tuple)에 대해 정리하였습니다. 다음 포스팅에서는 딕셔너리(dictionary)와 셋(set)에 대해 정리하도록 하겠습니다.