배열(Array)
list01 = [] # 빈 리스트
list02 = [1, 2, 3] # [1,2,3]
list03 = ['A', 'B', 'C'] # ['A', 'B', 'C']
리스트의 원소개수는 리스트를 만들기 전에 반드시 결정해야함
list04 = [None] * 5 # [None, None, None, None, None]
| 속성 | 설명 |
|---|---|
| 순서 보장 | 요소들이 삽입된 순서대로 저장됨 |
| 변경 가능 | 요소 값 수정, 추가, 삭제 가능 (mutable) |
| 중복 허용 | 중복된 값을 가질 수 있음 |
| 다양한 자료형 | 숫자, 문자열, 불 등 다양한 자료형 저장 가능 |
tuple01 = ()
tuple02 = 1,
tuple03 = (1,)
tuple04 = A', 'B', 'C',
원소가 한개인 경우 원소 뒤 쉼표 필수
tuple01 = 1, 2, 3,
tuple01[0] = 2 # 오류 출력
특징
| 속성 | 설명 |
| ------- | -------------------------- |
| 순서 보장 | 삽입한 순서를 그대로 유지 |
| 변경 불가 | 생성 후 요소 수정, 추가, 삭제 불가 |
| 중복 허용 | 중복된 값을 가질 수 있음 |
| 다양한 자료형 | 숫자, 문자열, 불 등 다양한 자료형 저장 가능 |
따로 생성한 리스트에서 모든 원소의 값이 같아도 실체는 다름
lst1 = [1,2,3,4,5]
lst2 = [1,2,3,4,5]
lst1 is lst2
False
lst1 = [1,2,3,4,5]
lst2 = lst1 # lst2는 lst1과 같은 메모리 주소를 참조
lst1 is lst2 # True
lst1[2] = 9
lst1 # [1,2,9,4,5]
lst2 # [1,2,9,4,5]
lst1 → [1,2,3,4,5] ← lst2
(메모리 주소 0x1000)
lst1[2] = 9 실행 후:
lst1 → [1,2,9,4,5] ← lst2
(메모리 주소 0x1000)
x = ['A','B','C','D']
for i, name in enumerate(x):
print(i, name)
0 A
1 B
2 C
3 D
for i, name in enumerate(x, 1): # 1부터 카운트
print(i, name)
1 A
2 B
3 C
4 D
enumerate() 함수는 인덱스와 원소를 짝지어 튜플로 꺼내는 내장 함수
list01 = [1,2,3,4,5,6,7]
for i in range(len(list01)//2):
list01[i], list01[len(list01)-i-1] = list01[len(list01)-i-1], list01[i]
print(list01)
def card_conv(x,r):
d = ''
dchar = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
while x > 0:
d += dchar[x % r] # 해당하는 문자를 꺼내 결함
x //= r
return d[::-1] # 역순으로 변환
x = int(input())
r = int(input())
print(card_conv(x, r))

# 얕은 복사 예제
lst1 = [1, [2, 3], 4]
lst2 = lst1.copy() # 얕은 복사
lst2[1][0] = 5
print(lst1) # [1, [5, 3], 4] - 내부 리스트가 변경됨
print(lst2) # [1, [5, 3], 4]
# 깊은 복사 예제
import copy
lst1 = [1, [2, 3], 4]
lst2 = copy.deepcopy(lst1) # 깊은 복사
lst2[1][0] = 5
print(lst1) # [1, [2, 3], 4] - 원본 유지
print(lst2) # [1, [5, 3], 4]
| 연산 | 설명 | 시간복잡도 |
|---|---|---|
| 접근 | 인덱스를 통한 직접 접근 | O(1) |
| 탐색 | 원하는 값 찾기 | O(n) |
| 삽입 | 중간 삽입 시 요소들 이동 필요 | O(n) |
| 삭제 | 중간 삭제 시 요소들 이동 필요 | O(n) |