리스트(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 |