Language/Python

[Python] 파이썬 리스트 List 정리 ( +, * , 메소드, 얕은 복사, 깊은복사)

yujindonut 2022. 3. 13. 10:43
728x90

리스트란 ? 

시퀀스 데이터 : 데이터에 순서가 존재하는 데이터

index를 이용해서 리스트[index]로 한번에 접근 가능하다

 

리스트를 만드는 방법

👉대괄호 이용

a = [1,2,3]

b = ['a','b','c']

c = [] #요소가 없는 비어있는 리스트

 

👉list()를 이용한 방법

d = list()

 

👉2중 for 문으로 2차원 배열 선언

array = [[0 for col in range(n) for row in range(n)]

 

👉연산자와 for 문으로 2차원 배열 선언

array = [ [0] * n for _ in range(n)]

 

👉연산자 * 로 2중 리스트 선언 ❌

array = [ [0] * n ] * n ]

이 방법으로 배열을 선언하게 되면, 단순히 요소를 복사하게 되는 얕은 복사가 일어나게 된다. 

단순 요소를 복사하다 보니 바라보는 객체 ( 주소값)은 동일!

이러한 방식으로 선언하고 값을 변경하게 되면, 다른 요소들도 값이 변경되는 현상이 발생하게 됨!


👊리스트 ' + '

: 리스트를 이어 붙인다

a = ['a','b','c']

b = [1,2,3]

print(a + b) # ['a','b','c',1,2,3]

 

👊곱셈 ' * '

: 리스트를 반복한다

a = [1,2,3]

b = a * 3

print(b)

#[1,2,3,1,2,3,1,2,3]

👊리스트 슬라이싱 : 리스트 자르기

리스트[ 시작 index : 끝 index + 1 ]


👊리스트의 길이, 삭제 

len ( 리스트 )

: 리스트의 길이를 반환해준다

 

del( 리스트 범위 or 리스트 특정 요소)

: 리스트 슬라이싱을 이용해 리스트에서 특정 범위만큼을 삭제할 수 있다.


🤍 리스트 메소드 : append , insert, remove, pop, extend

 

👊list.append(x) : 리스트에 값 추가

- 리스트 append함수를 이용해서 리스트의 끝에 값에 x를 추가하는 함수

 

👊list.insert(a,b) : 특정 위치에 값 추가

- a위치에 b값을 추가

 

👊list.remove(x) : 리스트에서 특정 값 제거

리스트에서 특정 값 x를 찾아서 제거하는 함수

x가 존재하지 않는다면 에러!

x가 여러개 존재하면, 맨 처음 x만 지워줌

 

👊list.pop() : 리스트 맨 마지막 값 반환 후 삭제

리스트에 있는 맨 마지막 값을 반환한 후에 리스트에서 해당 값을 삭제하는 함수

 

👊list.extend(list2) : 리스트에 다른 리스트2 연결

리스트1에 리스트2를 붙이고 싶을때 사용하는 함수

extend(매개변수) 함수의 매개변수에는 무조건 리스트가 와야한다!

 

💨 ' + '연산자와 다른 점
list1 + list2 : 두개의 리스트를 연결해서 새로운 list3을 반환함
list3 = list1 + list2

list1.extend(list2)는 list1 리스트 객체에다가 list2를 붙이고, list1객체를 그대로 사용할 수 있다는 점

 


리스트 메소드 : copy , reverse , sort , count , index, clear

👊list.copy() : 리스트 복사

- 주소값이 다른 리스트가 생기게됨 ( 깊은 복사 )

👊list.reverse() - 리스트 뒤집기

- 뒤집은 리스트 반환 X, 현재 리스트를 뒤집음

👊list.sort() - 리스트 정렬

💢 내부 요소의 데이터 타입이 같아야한다!

데이터 타입이 통일되지 않아서 비교가 불가능함 = 정렬 불가능

👊list.count(x) - 리스트 값 x의 개수 세기

리스트 내부에 매개 변수로 전달받은 x와 같은게 몇개가 있는지 세서 개수를 반환하는 함수

 

👊list.index(x) - 리스트 값 x의 값 위치(index)값 반환

x가 없다면 에러가 발생함

 

👊list.clear() - 리스트에 저장된 모든 값 삭제

리스트 내부에 존재하는 모든 값들을 삭제함


💩파이썬 리스트 깊은 복사 / 얕은 복사

깊은 복사 : 복사를 해서 각각 독립적인 리스트가 된다

예 ) copy함수, [:] 슬라이싱

 

얕은 복사 : 복사는 했지만 겉에만 복사가 됨! 같은 리스트를 가리키고 있는 것

예 ) = 대입

 

728x90