1. 인덱싱
인덱싱은 리스트나 튜플 같은 순서가 있는 데이터에서 특정 위치의 항목을 가져오는 방법입니다. 인덱스식을 사용하는 방법은 리스트와 튜플이 동일합니다.
기본적인 인덱싱:
과일 = ["사과", "바나나", "오렌지"]
print(과일[0]) # 사과
print(과일[1]) # 바나나
print(과일[2]) # 오렌지
인덱스는 0부터 시작합니다. 첫 번째 항목의 인덱스는 0, 두 번째 항목의 인덱스는 1, 이런 식으로 계속됩니다.
과일 = ["사과", "바나나", "오렌지"]
print(과일[-1]) # 오렌지 (마지막 항목)
print(과일[-2]) # 바나나 (뒤에서 두 번째 항목)
파이썬에서는 음수 인덱스를 사용하여 뒤에서부터 항목을 선택할 수 있습니다.
리스트 수정하기:
과일[1] = "키위"
print(과일) # ["사과", "키위", "오렌지"]
2. 객체와 식별 번호
파이썬에서 모든 것은 객체입니다. 각 객체는 고유한 식별 번호를 가지고 있습니다. id() 함수를 사용하여 객체의 식별 번호를 확인할 수 있습니다.
a = [1, 2, 3]
print(id(a)) # 예: 140712834927872
3. 객체 식별 번호의 변경
리스트와 같은 변경 가능한(mutable) 객체의 내용을 수정할 때, 식별 번호는 변경되지 않습니다.
a = [1, 2, 3]
print(id(a)) # 예: 140712834927872
a[0] = 4
print(id(a)) # 예: 140712834927872 (같은 번호)
하지만 객체를 새로운 값으로 완전히 대체하면, 식별 번호가 변경됩니다.
a = [1, 2, 3]
print(id(a)) # 예: 140712834927872
a = [4, 5, 6] # 새로운 리스트를 할당
print(id(a)) # 예: 140712834928096 (다른 번호)
4. 슬라이싱
리스트 또는 튜플의 원소 일부를 연속해서 또는 일정한 간격으로 꺼내 새로운 리스트 또는 튜플을 만드는 것을 슬라이스(slice)라고 합니다. 마치 케이크를 자르는 것처럼, 데이터의 특정 부분을 "잘라내는" 것이라고 생각하면 됩니다.
기본 문법:
리스트[시작:끝:단계]
- 시작: 슬라이싱을 시작할 인덱스
- 끝: 슬라이싱을 끝낼 인덱스 (이 인덱스의 직전까지 추출됨)
- 단계: 몇 개씩 건너뛸지 지정 (선택사항)
파이썬 슬라이싱 문법 패턴 표: x = [0, 1, 2, 3] 기준
패턴 | 설명 | 예시 | 결과 |
리스트[시작:끝] | 시작 인덱스부터 끝 인덱스 직전까지 추출 | x[1:3] | [1, 2] |
리스트[:끝] | 처음부터 끝 인덱스 직전까지 추출 | x[:2] | [0, 1] |
리스트[시작:] | 시작 인덥스부터 끝까지 추출 | x[2:] | [2, 3] |
리스트[:] | 전체 리스트 복사 | x[:] | [0, 1, 2, 3] |
리스트[시작:끝:단계] | 시작부터 끝 직전까지 단계만큼 건너뛰며 추출 | x[0:4:2] | [0, 2] |
리스트[::단계] | 처음부터 끝까지 단계만큼 건너뛰며 추출 | x[::2] | [0, 2] |
리스트[-시작:] | 뒤에서 시작 위치부터 끝까지 추출 | x[-2:] | [2, 3] |
리스트[:-끝] | 처음부터 뒤에서 끝 위치 직전까지 추출 | x[:-1] | [0, 1, 2] |
리스트[::-1] | 리스트를 역순으로 추출 | x[::-1] | [3, 2, 1, 0] |
리스트[-시작::-단계] | 뒤에서 시작 위치부터 역순으로 단계만큼 건너뛰며 추출 | x[-1::-2] | [3, 1] |
파이썬 슬라이싱 특징: x = [0, 1, 2, 3] 기준
print(x[1:10]) # 출력: [1, 2, 3]
print(x[-10:]) # 출력: [0, 1, 2, 3]
시작과 끝이 len(리스트)보다 크면 len(리스트)가 지정된 것으로 간주합니다. 인덱스와 달리 범위에서 벗어나는 값을 지정해도 오류가 되지 않습니다.
print(x[:2]) # 출력: [0, 1]
print(x[None:2]) # 출력: [0, 1]
시작이 없거나 None이면 0이 지정된 것으로 간주합니다.
print(x[1:]) # 출력: [1, 2, 3]
print(x[1:None]) # 출력: [1, 2, 3]
끝이 없거나 None이면 len(리스트)가 지정된 것으로 간주합니다.
'TIL' 카테고리의 다른 글
[TIL] 자료 구조와 배열 (Python) 4편 - 뮤터블과 이뮤터블 객체의 대입 (0) | 2024.09.10 |
---|---|
[TIL] 파이썬의 인수 전달 방식 이해하기 (0) | 2024.09.09 |
[TIL] 자료 구조와 배열 (Python) 2편 - 리스트와 튜플 (3) | 2024.09.09 |
[TIL] 자료 구조와 배열 (Python) 1편 - 기본 개념 (0) | 2024.09.08 |
[TIL] 파이썬에서 입력 - input()은 string 이다 (0) | 2024.09.06 |