![[Python] 리스트(List) 심화 - 파이썬 자료구조](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcSVPS%2FbtsOdjDFExy%2FtyzVDNecc1p18XPtBDt280%2Fimg.jpg)
[Python] 리스트(List) 심화 - 파이썬 자료구조COMPUTER SCIENCE/Python2025. 5. 28. 22:06
Table of Contents
본 강의는 학부 강의 '컴퓨터 프로그래밍 1'과 강의 교재 '파워 유저를 위한 파이썬 Express' 의 내용을 바탕으로 이해한 내용을 작성하였습니다.
리스트가 어떤 친구인지 알았으니, 이제 리스트를 잘 이용할 수 있도록 고급 스킬들을 알아보도록 하자.
추후에 리스트에 등장하는 인덱스 개념은 전공 자료구조에 정말 흔히 쓰이는 단어이니 나와 물아일체가 되도록 체득하자.
리스트 합병과 복제
heroes1 = ["Ironman", "Thor"]
heroes2 = ["Hulk", "Hawkeye"]
avengers = heroes1 + heroes2
# avengers의 리스트는 ["Ironman", "Thor", "Hulk", "Hawkeye"] 가 된다.
# numbers = [5, 6, 7, 8] * 3
# 이 리스트는 어떻게 될지 생각해보자.
- 늘 그렇듯 코딩의 세계에서는 + 연산자는 단순 덧셈이 아니다. 여기서는 두 집합의 원소들이 하나로 합쳐지는 개념이다.
리스트 비교
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2)
# True
list1 = [3, 4, 5]
list2 = [1, 2, 3]
print(list1 > list2)
# True
- 리스트와 리스트를 비교할 때, 요소들이 기초 자료형(정수, 실수, 문자열)이 아니고 사용자가 정의한 객체인 경우에는, 사용자가 객체 안에 == 연산과 != 연산을 정의하여야 한다.
리스트 복사
얕은 복사
temps = [31, 28, 32, 34, 24, 25, 23]
values = temps
print(temps) # temps 리스트 출력
values[3] = 39 # values 리스트 변경
print(temps) # temps 리스트가 변경되었다.
# 출력 예시
# [31, 28, 32, 34, 24, 25, 23]
# [31, 28, 32, 34, 24, 25, 23]
깊은 복사
temps = [31, 28, 32, 34, 24, 25, 23]
values = list(temps)
list()는 리스트 객체의 생성자. 객체를 생성하고 초기화하는 함수. 다른 객체들을 받아서 리스트로 변환한다.
슬라이싱
# Syntax
# 리스트[ start : stop ]
# e.g.
numbers = [ 10, 20, 30, 40, 50, 60, 70, 80, 90 ]
sublist = numbers[2 : 7]
- 시작과 끝 인덱스는 생략이 가능하다.
numbers[:3] # [10, 20, 30]
numbers[3:] # [40, 50, 60, 70, 80, 90]
numbers[:] # [10, 20, 30, 40, 50, 60, 70, 80, 90]
new_numbers = numbers[:] # 깊은 복사가 된다.
고급 슬라이싱
# Syntax
# 리스트[ start : stop : step ]
numbers = [ 10, 20, 30, 40, 50, 60, 70, 80, 90 ]
sublist = numbers[2:7:2]
리스트 역순으로 만들기
numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90]
numbers[::-1]
# 출력 결과
# [90, 80, 70, 60, 50, 40, 30, 20, 10]
리스트 변경
list = [1, 2, 3, 4, 5, 6, 7, 8]
list[0:3] = ['white', 'blue', 'red']
list
# 출력 결과
# ['white', 'blue', 'red', 4, 5, 6, 7, 8]
# 리스트 일부가 변경되었다.
list = [1, 2, 3, 4, 5, 6, 7, 8]
list[::2] = [100, 100, 100, 100]
list
# 출력 결과
# [100, 2, 100, 4, 100, 6, 100, 8]
# 100이 중간에 추가되었다.
list = [1, 2, 3, 4, 5, 6, 7, 8]
list[:] = []
lst
# 출력 결과
# []
# 리스트의 모든 요소가 삭제되었다.
numbers = list(range(0, 10)) # 0에서 시작하여 9까지 저장하는 리스트
print(numbers)
del numbers[-1] # 마지막 항목을 삭제. 즉, 리스트의 특정 요소를 삭제한다.
print(numbers)
# 출력 결과
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# [0, 1, 2, 3, 4,5, 6, 7, 8]
문자열과 리스트
- 문자열은 문자들이 모인 리스트라고 생각하면 편하다.
s = "power overwhelming"
print(s[0])
# p
print(s[6:10])
# over
불변 객체가 함수로 전달되면?
def func1(x):
x = 42
print("x=",x,"id=",id(x))
y = 10
func1(y)
print("y=",y,"id=",id(y))
# 출력 결과
# x = 42 id = 1640249990
# y = 10 id = 1640249268
변경이 불가능한 객체는 값으로 전달된다고 볼 수 있다. 객체의 참조값이 함수의 매개 변수로 전달되지만 함수 안에서 객체의 값을 변경하면 새로운 객체가 생성되기 때문이다.
리스트가 함수로 전달되면?
def func2(list):
list[0] = 100
values = [0, 1, 1, 2, 3, 5, 8]
func2(values)
print(values)
# 출력 결과
# [100, 1, 1, 2, 3, 5, 8]
리스트 함축
# Syntax
## [ 수식 for (변수 in 리스트) if (조건) ]
squares = [ x*x for x in range(10) ]
# squares : 새로운 리스트
# x*x : 출력식으로 새로운 리스트의 요소가 된다.
# x : 입력 리스트에 있는 요소 x에 대하여
# range(10) : 입력 리스트
# 예시 코드
squares = []
for x in range(5):
squares.append(x*x)
- 리스트 함축에는 if를 사용하여 조건이 추가될 수 있다.
리스트 함축은 요즘 잘 쓰이지 않는다. 하지만 수많은 개발자 중 리스트 함축을 사용하여 코드를 짜는 스타일을 갖고 있는 사람도 있으니 나중에 오픈 소스 코드 등을 읽을 때 알아두면 읽기 수월할 것이다.
'COMPUTER SCIENCE > Python' 카테고리의 다른 글
[Python] 객체와 클래스 (1) | 2025.06.09 |
---|---|
[Python] 2차원 리스트 - 파이썬 자료구조 (0) | 2025.05.29 |
[Python] 리스트(List) 기본 - 파이썬 자료구조 (3) | 2025.05.26 |
[Python] 반복문(for 문) (0) | 2025.04.16 |
[Python] 함수(Function) (0) | 2025.04.10 |
@Ungbae :: 그럼에도 불구하고
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!