리스트함수 / 리스트 복사 / 리스트내포 / 리스트와 큐, 스택
리스트
-
대괄호로 정의
-
리스트 안의 리스트 > 다차원 배열로 사용 가능
l = [[1, 2, 3], [4, 5], [6, 7]] print(l[0]) print(l[0][1]) ### 출력 ### [1, 2, 3] ### 2
리스트 함수
-
insert(인덱스, 값)
: 해당 인덱스에 값 추가l = [0, 1, 2, 3, 4, 5] l.insert(0, 9) l.insert(6, 'hello') print(l) ### 출력 ### [9, 0, 1, 2, 3, 4, 'hello', 5]
-
pop(인덱스)
: 해당 인덱스 값 삭제pop()
: 기본값 > 마지막 값 삭제
l = [0, 1, 2, 3, 4, 5] l.pop() l.pop(0) print(l) ### 출력 ### [1, 2, 3, 4]
-
reverse()
: 값 거꾸로 정렬l = [1, 2, 3, 4] l.reverse() print(l) ### 출력 ### [4, 3, 2, 1]
-
count(값)
: 해당 값의 개수l = [0, 1, 1, 1, 2, 2, 3] print(l.count(1)) ### 출력 > 3
-
append()
: 해당 값을 요소로 추가 -
extend()
: 해당 리스트를 뒤에 붙임 (확장) -
sort()
: 오름차순으로 값 정렬-
sort는 원래 자체를 섞는 것
-
sorted는 변수를 새로 생성해 다른 위치 메모리에 저장, 원래 변수는 그대로!
-
-
index()
: 리스트에 해당 값이 있다면 해당 값의 인덱스 반환 -
copy()
: 리스트 복사 -
del 리스트[위치]
: 삭제 -
remove()
: 해당 요소 삭제 -
join()
: 특정 구분자를 추가해 문자열로 변환list = ['a', 'b', 'c'] print('/'.join(list)) ### 출력 ### a/b/c
리스트 복사
-
얕은 복사 (shallow copy)
-
한 차원밖에 복사 못 함
-
b에 a 복사 시 같은 메모리 주소 > b 값 변경 시 a의 값도 변경됨
a = [1, 2, 3, 4] b = a print(b) b[3] = 1 print(a) print(b) ### 출력결과 ### [1, 2, 3, 4] ### [1, 2, 3, 1] ### [1, 2, 3, 1]
a = [[1, 2], [3, 4]] b = a.copy() print(b) b[1].append(5) print(a) print(b) ### 출력결과 ### [[1, 2], [3, 4]] ### [[1, 2], [3, 4, 5]] ### [[1, 2], [3, 4, 5]]
-
-
깊은 복사 (deep copy)
-
모든 차원에 대해 복사
-
copy.deepcopy()
메소드 사용a = [[1, 2], [3, 4]] b = copy.deepcopy(a) print(b) b[1].append(5) print(a) print(b) ### 출력결과 ### [[1, 2], [3, 4]] ### [[1, 2], [3, 4]] ### [[1, 2], [3, 4, 5]]
-
리스트 내포 (List Comprehension)
-
for문과 if문을 한 라인에 작성해 코드를 간결하고 쉽게 만들며, 실행속도를 높여줌
-
리스트명 = [식 for 변수 in 반복가능한대상]
l = [] for i in range(5): l.append(i) print(l) ### 출력 ### [0, 1, 2, 3, 4]
=> 리스트내포 =>
print([i for i in range(5)]) ### 출력 ### [0, 1, 2, 3, 4]
리스트와 큐(Queue) / 스택(Stack)
-
큐(Queue) : 먼저 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조
-
리스트에 데이터 추가 : 뒤에서 데이터 추가 > append 함수 사용
-
리스트에서 데이터 빼기 : 앞에서부터 데이터 빼기 > pop 함수 사용
l = [1, 2, 3, 4] l.append(5) l.pop(0) print(l) ### 출력 ### [2, 3, 4, 5]
-
-
스택(Stack) : 나중에 집어 넣은 데이터가 먼저 나오는 LIFO(Last In First Out)구조
-
리스트에 데이터 추가 : 뒤에서 데이터 추가 > append 함수 사용
-
리스트에서 데이터 빼기 : 뒤에서부터 데이터 빼기 > pop함수 사용
l = [1, 2, 3, 4] l.append(5) print(l) l.pop() print(l) ### 출력 ### [1, 2, 3, 4, 5] ### [1, 2, 3, 4]
-