본문 바로가기

CS공부

파이썬 파헤치기 - 배열(Array)에 대해서

리스트(list)와 튜플(tuple)

리스트는 [1, 2, 3] 형태로 정의하며 각 원소를 수정 할 수 있는 특성갖으며, []는 비어있는 list를 의미 합니다.

b = [1,"A",2,3,4]
type(b)
<type 'list'>

튜플은 (1, 2, 3) 형태로 정의하며 한번 정의한 원소를 수정 할 수 없는 특성을 가집니다.

튜플 원소에 대한 수정 작업은 "TypeError: 'tuple' object does not support item assignment" 같은 오류를 발생.

()는 빈 tuple을 의미하며, 위에서 언급했듯 원소의 추가 삭제가 불가능합니다.

 

주의할 점은 원소가 하나만 있는 tuple은 일반적인 괄호와 구분이 되지 않기 때문에

('A',)와 같이 작성해 tuple임을 알 수 있습니다.

 

그렇다면 원소의 추가와 삭제를 해야되는 상황일 때는 어떻게 해야되는가?

-> 튜플을 다시 선언하면 된다!

 

아래는 b[0]를 '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')  

배열 내부에 또다른 배열을 갖는 경우 해당 원소에 대한 접근의 경우, b[][0]같은 방식으로 인덱스를 지정 합니다.

배열 내부에 이미 정의한 다른 배열 변수를 포함시키면 포함된 배열을 참조하는 형태로 관리되어 포함된 배열을 수정하면 포함한 상위 배열도 같은 내용을 보게 됩니다.

 

아래 예시에서 a 배열이 b 배열을 포함했는데, b[2][0]을 'test'로 변경했을때 a배열에도 동일한 내용이 반영되는 것을 확인할 수 있습니다.

이는 추후 포스팅할 copy에서 더 자세히 다루도록 하겠습니다!

print(b)
(1, 'aa', [3, 4, 5], 6, 7)
print(b[2])
[3, 4, 5]
print(b[2][0])
3
a = [3, b, 'aaa']
print(a)
[3, (1, 'aa', [3, 4, 5], 6, 7), 'aaa']
b[2][0] = 'test'
print(a)
[3, (1, 'aa', ['test', 4, 5], 6, 7), 'aaa']

배열을 사용하는 이유는??

  • 동일한 종류의 데이터를 효율적으로 관리하기 위해
  • 동일한 종류의 데이터를 순차적으로 저장
  • 인덱스를 통 데이터 접근 가능

2차원의 배열에서 인덱스를 통한 접근 방법은?

1차원 배열의 경우 가장 첫 번째 원소가 인덱스 0번임을 활용해 인덱스 접근이 가능하다면, 2차원 배열의 경우 어떻게 해야 될까요?

 

2차원 배열의 경우 A[][]의 형태로 인덱스를 통한 접근이 가능합니다.

위의 예시로 든 4라는 배열에서 test에 접근하기 위해서는

a[2][1]을 통해 가능합니다. 가장 바깥에서부터 안쪽으로 들어가는 것이라고 생각하면 되겠습니다.

'CS공부' 카테고리의 다른 글

파이썬 파헤치기 - numpy 배열 연산자를 알아보자!  (0) 2023.05.16
Class란 무엇인가?  (0) 2023.05.04
replication과 clustering이란??  (0) 2023.05.03
JVM이란 무엇인가요?  (0) 2023.04.23
B-트리 구조와 B+구조  (0) 2023.04.21