1. 파이썬에서는 배열을 리스트(list)와 튜플(tuple)로 구현할 수 있습니다.
리스트와 튜플은 '데이터 컨테이너(Data Container)' 또는 '데이터 구조(Data Structure)'라고 불립니다.
데이터 컨테이너:
데이터 컨테이너는 여러 데이터 항목을 하나의 단위로 묶어서 저장하고 관리할 수 있게 해주는 객체를 말합니다. 마치 여러 물건을 담을 수 있는 상자와 같은 역할을 합니다. (ex. 연필통은 연필, 지우개, 자 등 여러 문구용품을 담는 컨테이너예요.)
데이터 구조:
데이터 구조는 데이터를 효율적으로 저장, 관리, 사용할 수 있도록 구조화한 방식을 말합니다. 데이터 구조는 데이터 컨테이너의 더 넓은 개념이라고 볼 수 있습니다. 쉽게 말해 데이터 구조는 데이터를 정리하는 방법이에요. 마치 우리가 물건을 정리할 때 여러 가지 방법을 사용하는 것처럼요. (ex. 옷장에 옷을 정리할 때, 종류별로 정리할 수도 있고, 계절별로 정리할 수도 있죠.)
2. 리스트 생성하는 4가지 방법
a) 대괄호 [ ] 사용하기:
리스트는 연산자 [ ] 안에 원소를 쉼표(,)로 구분하여 표기하여 생성할 수 있습니다.
과일 = ['사과', '바나나', '오렌지']
숫자 = [1, 2, 3, 4, 5]
혼합 = [1, '둘', 3.0, True]
b) list() 함수 사용하기:
# 문자열로 리스트 만들기
과일 = list("바나나")
# 숫자로 리스트 만들기
숫자 = list(range(1, 6))
# 튜플로 리스트 만들기
색깔 = list(("빨강", "파랑", "노랑"))
c) 빈 리스트 만들기:
원소 없이 [ ] 만 사용하면 빈 리스트를 생성합니다.
빈_리스트1 = []
빈_리스트2 = list()
d) 리스트 컴프리헨션 사용하기 (약간 고급 기술이에요):
제곱수 = [x**2 for x in range(1, 6)] # [1, 4, 9, 16, 25]
3. 특정 범위의 정수로 구성된 리스트 만들기 - range(), list() 함수 조합
# 1부터 5까지의 숫자 목록 만들기
숫자_목록 = list(range(1, 6))
# 1부터 5까지 순서대로 넣습니다.
# 0부터 10까지 짝수 목록 만들기
짝수_목록 = list(range(0, 11, 2))
# 0부터 10까지 2칸씩 건너뜁니다.
# 10부터 1까지 거꾸로 세기
거꾸로_목록 = list(range(10, 0, -1))
# 10부터 시작해서 1씩 줄어듭니다.
4. 튜플 생성하는 5가지 방법
a) 소괄호 ( ) 사용하기:
과일 = ('사과', '바나나', '오렌지')
숫자 = (1, 2, 3, 4, 5)
혼합 = (1, '둘', 3.0, True)
b) tuple() 함수 사용하기:
# 글자로 튜플 만들기
이름 = tuple("철수")
# 숫자로 튜플 만들기
숫자 = tuple(range(1, 6))
# 리스트로 튜플 만들기
동물 = tuple(['고양이', '강아지', '토끼'])
c) 소괄호 없이 만들기 (콤마로 구분):
색상 = '빨강', '파랑', '노랑'
d) 빈 튜플 만들기:
빈_튜플1 = ()
빈_튜플2 = tuple()
e) 항목이 하나인 튜플 만들기 (콤마 필수):
한_항목_튜플 = ('사과',)
5. 특정 범위의 정수로 구성된 리스트 만들기 - range(), tuple() 함수 조합
# 1부터 5까지의 숫자 묶음 만들기
숫자_묶음 = tuple(range(1, 6))
1부터 5까지 숫자를 순서대로 넣습니다.
# 0부터 10까지 짝수 묶음 만들기
짝수_묶음 = tuple(range(0, 11, 2))
#0부터 10까지 2칸씩 건너뜁니다.
#10부터 1까지 거꾸로 세기
거꾸로_묶음 = tuple(range(10, 0, -1))
# 10부터 시작해서 1씩 줄어듭니다.
6. 리스트와 튜플 차이점 확인하기
# 리스트 수정하기
과일_리스트 = ['사과', '바나나', '오렌지']
과일_리스트[1] = '키위' # 바나나를 키위로 바꿔요
과일_리스트.append('망고') # 망고를 추가해요
print(과일_리스트) # ['사과', '키위', '오렌지', '망고'] 출력
# 튜플 수정 시도하기 (오류 발생)
과일_튜플 = ('사과', '바나나', '오렌지')
# 과일_튜플[1] = '키위' # TypeError: 'tuple' object does not support item assignment
# 과일_튜플.append('망고') # AttributeError: 'tuple' object has no attribute 'append'
리스트는 [ ]를 사용하고 내용을 변경할 수 있지만, 튜플은 ( )를 사용하고 한 번 만들어지면 내용을 변경할 수 없다는 것이 가장 큰 차이점입니다.
리스트:
- 원소를 변경할 수 있는 뮤터블(mutable) list형 객체입니다.
- 생성 후에도 내용을 수정, 추가, 삭제할 수 있습니다.
- 대괄호 [ ]를 사용합니다.
- 동적 메모리 할당으로 약간 더 많은 메모리를 사용합니다.
- 변경 가능성으로 인해 약간 더 느립니다.
- 다양한 변경 메소드를 제공합니다. append(), remove(), sort() 등을 활용할 수 있습니다.
- 내용이 자주 변경되는 데이터에 사용됩니다. (ex. 쇼핑 몰록, 할 일 목록, 사용자 입력 데이터)
튜플 :
- 원소에 순서를 매겨 결합한 것으로 원소를 변경할 수 없는 이뮤터블(immutable) 자료형입니다.
- 생성 후에는 내용을 수정할 수 없습니다.
- 소괄호 ( )를 사용합니다.
- 괄호 생략 가능합니다.
- 정적 메모리 할당으로 더 적은 메모리를 사용합니다.
- 변경 불가능성으로 인해 약간 더 빠릅니다.
- 변경 메소드가 없으며 주로 인덱싱, 슬라이싱, 길이 확인 등의 연산만 가능합니다.
- 변경되지 않아야 하는 데이터에 사용됩니다. (ex. 좌표, RGB 색상 값, 날짜)
7. 리스트와 튜플 풀어내기 (unpack)
언패킹(Unpacking)은 리스트나 튜플과 같은 자료구조에 담긴 여러 값들을 개별 변수로 분리하여 할당하는 과정입니다.
리스트 언패킹:
과일 = ["사과", "바나나", "오렌지"]
첫번째, 두번째, 세번째 = 과일
print(첫번째) # 사과
print(두번째) # 바나나
print(세번째) # 오렌지
튜플 언팩킹:
점수 = (90, 85, 95)
국어, 영어, 수학 = 점수
print(국어) # 90
print(영어) # 85
print(수학) # 95
별표(*)를 사용한 언패킹:
동물 = ["강아지", "고양이", "토끼", "햄스터"]
첫번째, 두번째, *나머지 = 동물
print(첫번째) # 강아지
print(두번째) # 고양이
print(나머지) # ['토끼', '햄스터']
여기서 *나머지는 남은 모든 값을 리스트로 묶어 나머지 변수에 할당합니다.
필요 없는 값 무시하기:
학생_정보 = ("철수", 15, "서울", "중학교")
이름, 나이, _, 학교 = 학생_정보
print(f"{이름}는 {나이}살이고 {학교}에 다닙니다.")
# 철수는 15살이고 중학교에 다닙니다.
여기서 _는 관심 없는 값(여기서는 "서울")을 무시하는 데 사용됩니다.
'TIL' 카테고리의 다른 글
[TIL] 파이썬의 인수 전달 방식 이해하기 (0) | 2024.09.09 |
---|---|
[TIL] 자료 구조와 배열 (Python) 3편 - 인덱스싱, 슬라이싱 (1) | 2024.09.09 |
[TIL] 자료 구조와 배열 (Python) 1편 - 기본 개념 (0) | 2024.09.08 |
[TIL] 파이썬에서 입력 - input()은 string 이다 (0) | 2024.09.06 |
[TIL] 좋아요 버튼 누르면 버튼 컬러가 변경되는 기능 구현하기 (1) | 2024.08.31 |