Search
📶

배열

파이썬의 배열은 여러 원소를 하나의 묶음으로 관리하고 각 원소간에는 순서가 존재하여 인덱스를 통해 접근하는 리스트다.
배열에는 리스트와 튜플이라는 두가지 타입이 있다. 파이썬의 배열은 각 원소의 데이터 타입이 동일하지 않아도 되고 다른 배열을 원소로 가지는 것도 허용된다.
배열간의 비교는 동일 인덱스끼리 비교하는 방식으로 이뤄진다.

리스트와 튜플

리스트는 [1,2,3] 형태로 정의되고, 수정할 수 있다. []는 빈 리스트를 의미한다.
b = [1,"aa",3,4,5] type(b) <type 'list'>
Python
복사
튜플은 (1,2,3) 형태로 정의되고, 한번 정의한 원소는 수정될 수 없다. 추가와 삭제도 할 수 없다. ()는 빈 튜플을 의미한다. 원소가 하나만 있을 경우 일반적인 괄호와 구분되지 않기 때문에 (’A’,) 이런식으로 표시한다.
튜플 원소를 교체하거나 추가하는 작업을 하고싶다면 아예 새로운 튜플을 생성하는 방법으로 가능하다. → 하지만 왠만하면 이런 번거로운 과정을 거치고 싶지 않다면 애초에 튜플로 만들지는 말자.
b = (1,"aa",[3,4,5],6,7) type(b) <type 'tuple'> t = ('a','b','c','d','e') t = ('A',) + t[1:] t ('A', 'b', 'c', 'd', 'e')
Python
복사
배열 내부에 또 다른 배열의 원소로 접근하는 방법은 b[2][0] 이런 방식으로 가능하다. 하위 배열의 원소를 변경할 경우, 상위 배열도 반영되는 결과를 확인할 수 있다.
b (1, 'aa', [3, 4, 5], 6, 7) b[2] [3, 4, 5] b[2][0] 3 a = [3,b,'aaa'] a [3,(1, 'aa', [3, 4, 5], 6, 7),'aaa'] b[2][0] = 'test' a [3,(1, 'aa', ['test', 4, 5], 6, 7),'aaa']
Python
복사

배열 연산자

배열 연산자에는 연산을 수행하고 리턴값이 있는 경우와 없는 경우로 나뉜다. 없는 경우 반환되는 타입은 None 타입이라고 부른다.
A.append(obj)
: 배열 맨 뒤 원소로 obj를 추가한다. None type
A + B
: 배열 A와 B를 연결해서 새로운 배열을 리턴한다. 이때 A와 B는 동일한 타입이어야 한다. 즉 리스트는 리스트, 튜플은 튜플끼리만 가능하다. += 연산자도 사용 가능하다.
A * i
: 배열 A를 i회 반복해서 새로운 배열을 반환한다. *= 연산자도 사용 가능하다.
A.extend(list)
: 배열 맨 뒤에 리스트를 붙인다. 파라미터는 리스트만 허용한다. None type
A.insert(index,obj)
: index로 지정한 위치에 원소로 obj를 삽입하고 나머지는 우측으로 이동시킨다. None type
del A[index]
: index로 지정한 위치의 원소를 제거하고 나머지를 좌측으로 이동시킨다. del A[i:j] 와 같이 범위를 지정해서 삭제할 수도 있다.
A.pop(index)
: index로 지정한 위치의 원소를 삭제하여 해당 원소를 반환한다. 나머지를 좌측으로 이동시킨다.
a [1,2,3,4,9,8,7] a.pop(3) # 3 인덱스 원소 삭제 4 a [1,2,3,9,8,7]
Python
복사
A.remove(obj)
: 배열에서 obj와 같은 첫 항목을 제거하고 나머지를 좌측으로 이동시킨다. None type
a [1,2,3,9,8,7] a.remove(9) a [1,2,3,8,7]
Python
복사
A.reverse()
: 배열의 순서를 뒤집는다. A[::-1] 와 동일하다. None type
A.sort()
: 배열을 오름차순으로 정렬한다. 내림차순 정렬은 A.sort(reverse=True) 다. None type
A.index(obj)
: 배열에서 obj와 동일한 첫 항목을 찾아서 인덱스를 반환한다. 없다면 오류 출력
A.count(obj)
: 배열에서 obj와 동일한 항목의 개수를 반환한다.
len(A)
: 배열의 원소 개수를 반환한다.
‘’.join(A)
: 배열의 모든 원소를 합쳐 하나의 문자로 반환한다. 단, 배열의 모든 원소가 문자여야만 가능하다.
a = ('a','b','c') ''.join(a) 'abc' '=='.join(a) 'a==b==c'
Python
복사
A.split(’sep’)
: 문자 A를 sep 기준으로 분리한 리스트를 반환한다. ‘sep’을 생략하면 공백을 기준으로 나눠 리스트를 생성한다.
list(A), tuple(A)
: 문자 A에 있는 모든 문자를 각각 분리한 list 또는 tuple로 반환한다. list()나 tuple()은 빈 배열을 반환한다.
obj in A
: obj로 지정한 값이 배열에 존재한다면 True를 반환한다.
sum(A)
: 배열의 모든 원소값을 더하고 반환한다. 단, 모든 원소가 숫자여야 한다.
max(A), min(A)
: 배열중에서 가장 큰 값, 가장 작은 값을 반환한다.
all(A)
: 배열 내 모든 원소가 True이면 True를 반환
any(A)
: 배열이 비어있지 않으면 True
divmod(a,b)
: a를 b로 나눈 몫과 나머지로 구성된 tuple을 반환한다.
divmod(10,3) (3, 1) type(divmod(10,3)) <type 'tuple'>
Python
복사
zip(A,B,…)
: 인수로 지정된 배열 또는 문자의 각 원소들을 원소개수가 가장 작은 것을 기준으로 동일 인덱스로 묶어 새로운 배열을 반환한다.
zip([1,2,3],('a','b','c'),['qqq','rrr'],"222222") [(1,'a','qqq','2'),(2,'b','rrr','2')]
Python
복사