파이썬의 배열
파이썬 내에서의 배열(Array)은 다른 프로그래밍 언어와는 조금 다른 특징들을 가지고 있습니다.
C++를 예로 들자면, C++의 배열은 변수를 선언할 때, 크기(size)와 형식(int, string, bool)을 정해
주어야만 합니다.
int myArray[7] = {11, 9, 5, 8, 7, 6, 4};
아래 그림에서 보이는 것과 같이 배열을 선언했을때의 크기(7)와 타입(int)이 정해준 데로 생성된 것을 볼 수 있습니다.
앞의 예와는 다르게, 파이썬 내에서 배열은 동적 배열로써 크기 조정이 가능하고, 각 원소의 데이터 타입이 동일하지 않아도 되며, 심지어 다른 배열(list or tuple)을 원소로 갖는 것도 허용이 됩니다.
myArray = [1, ‘Hi’, True, [2,3,4], (6,7)]
리스트와 튜플
이러한 특성을 가진 파이썬의 배열은 여러 원소를 하나의 묶음으로 관리하고 각 원소간에는 순서(order)가
존재하여 인덱스(Index)를 통해 접근합니다. 파이썬의 배열은 리스트(list)와 튜플(tuple)이라는 두가지 타입을 사용합니다.
리스트(list)는 "[ ]" 네모난 괄호를 사용하여 정의하며 각 원소를 수정할 수 있는 특성을 갖고 있습니다.
myList = [1, ‘Hi’, True, [2,3,4],(6,7)]
print(type(myList))
#<type ‘list’>
튜플(Tuple)은 “( )” 둥근 괄호를 사용하여 정의하며, 한번 정의한 원소를 수정 할 수 없는 특성이 있습니다. 주의할 점은 원소가 하나만 있는 튜플 타입은 일반적인 괄호와 구분이 되지 않기 때문에 (‘A’ , )와 같이 사용하면 튜플 타입임을 명시할 수 있습니다.
myTuple= (1, “Hi”, True, [2,3,4], (6,7))
print(type(myTuple))
#<type ‘tuple’>
위에 언급했듯이 튜플 타입은 수정이 불가능합니다. 그렇게 때문에 만약 기존 튜플에서 원소를 수정해야한다면 새로운 튜플을 생성하는 방법으로 수정이 가능합니다.
newTuple = (2 , 3, 4, 5, 6)
newTuple = (1, ) + newTuple
print(newTuple)
# (1,2,3,4,5,6)
배열 초기 선언
아래에는 다양하게 방법들로 파이썬의 배열을 초기에 선언하는 방법들입니다.
1. 비어있는 배열(리스트)로 초기화
비어있는 배열로 리스트를 만들 경우 간단히 myList = [ ] 혹은 myList = list()을 사용해서 만들 수 있습니다.
# 방법 1.
myList = []
print(myList) # []
# 방법 2.
myList = list()
print(myList) # []
2. 배열(리스트)에 값 선언
배열에 초기 값을 넣어서 선언하는 경우 직접 리스트에 값을 넣는 경우, 혹은 range, if-else, for문을 사용하여 값을 초기에 선언하며 생성할 수 있습니다.
# 방법 1. [ ]안에 값 직접 입력
myList = [True,'Two', (3,4), 6, [6,7]]
print(my_list) # [True,'Two', (3,4), 6, [6,7]]
# 방법 2. range 객체를 통해 생성
myList = [x for x in range(0,10,2)] # 0~9까지 1개씩 건너뛰며 선택
print(myList) # [0,2,4,6,8)
# 방법 3. range객체와 if절을 통해 생성
myList = [x for x in range(10) if x %3 == 0] # 0~9까지 3으로 나눴을 때 나머지가 0일때 선택
print(myList) # [0,3,6,9]
# 방법 4. range객체, if-else절을 통해 생성
myList = [x.upper() if x.isupper() else x.upper() for x in 'abCdE']
print(myList) # ['A', 'B', 'C', 'D', 'E']
3. list() 함수 사용법
배열(리스트)은 list() 함수를 호출해서 만들 수도 있습니다. list() 안에 리스트, 튜플, 문자열, 딕셔너리 타입의 키와 값 등을 넣어주면 list타입으로 바꾸어 줍니다. 단, list( ) 괄호 안에는 1개의 값만 받을 수 있습니다.
# 방법 1. 튜플 -> 리스트
myTuple = (True,'Two', (3,4), 6, [6,7])
myList = list(myTuple)
print(myList) # [True,'Two', (3,4), 6, [6,7]]
# 방법 2. range()를 통해 정수배열을 생성
myList = list(range(4))
print(myList) # [0,1,2,3]
# 방법 3. 문자열의 각 문자를 요소로 하는 배열 생성
myList = list('Hello')
print(myList) # ['H','e','l','l','o']
# 방법 4. 딕셔너리 타입의 키 -> 리스트
myDict = {1:'Kiwi', 2:'Melon', 3:'Apple'}
myList = list(myDict.keys())
print(myList) # [1,2,3]
# 방법 5. 딕셔너리 타입의 값 -> 리스트
myList = list(myDict.values())
print(myList) # ['kiwi', 'Melon', 'Apple']
4. 2차원 배열(리스트) 생성
2차원 배열을 생성하는 방법은 [ ] 괄호 안에 [ ] 괄호와 값을 넣어주면 생성됩니다. 추가로, list() 함수 안에 리스트 객체를 넣어 2차원 배열을 생성할 수 있습니다.
# 방법 1. [ [][] ] 괄호 안에 괄호!
myList = [[1,2],[3,4],[5,6]]
print(myList) # [[1,2],[3,4],[5,6]]
# 방법 2. list() 함수 안에 [ ] 괄호 추가
myList = [1,2,3,4,5]
myList = list([myList])
print(myList) # [[1,2,3,4,5]]
'자료구조' 카테고리의 다른 글
[Python/파이썬] 세트 자료형 (0) | 2023.05.25 |
---|---|
[Python/파이썬] 딕셔너리 자료형 (0) | 2023.05.11 |
[Python/파이썬] 배열 연산자 - 리스트 순서 조작 및 기타 연산자 (0) | 2023.05.09 |
[Python/파이썬] 배열 연산자 - 추가 및 삭제 (0) | 2023.05.09 |
[Python/파이썬] - 배열의 인덱싱과 슬라이싱 (0) | 2023.05.09 |