Python의 리스트(list)에 대하여

다양한 타입의 데이터를 하나의 자료로 표현할 수 있는 시퀀스 자료형

 

그림1. list에 대한 예시

 

1) 리스트 슬라이싱(slicing)

 

리스트의 값들은 각각에 해당하는 주소(offset)를 갖는다

 

그 주소를 기반으로 리스트의 부분값을 슬라이싱하여 가져올 수 있는 기법

 

그림2. list의 index인 주소를 나타낸 그림

 

index가 처음부터 0,1,2,...로 가는건 누구나 알지만 거꾸로 -1,-2,-3...으로 가는건 아무나 아는 것이 아니다

 

그림3. list slicing에 대한 사례

 

 

2) concatenation, repeat, in

 

리스트도 덧셈 연산으로 concatenation 가능

 

*연산은 리스트를 반복함(repeat)

 

in연산은 해당 원소가 리스트에 포함되어 있는지 확인

 

그림4. list의 concatenation, repeat, in 연산

 

3) change element

 

리스트 내 원소를 변경

 

바꾸고 싶은 원소의 인덱스 i를 이용하여 color1[i]=(바꾸고 싶은 value)

 

그림5. list에서 원소를 변경하는 방법

 

4) remove, append element

 

remove(특정원소), del (list이름)[index]로 원소를 제거

 

append는 원소를 추가하고 extend는 리스트를 추가

 

insert는 인덱스 값에 원소를 추가?

 

그림6. append, extend, insert, remove, del 예시

 

5) 리스트의 메모리 저장 방식

 

파이썬의 리스트는 특이하게 메모리를 저장한다

 

다음 그림7은 a=[1,2,3], b=[3,2,1]로 선언한 상태,

 

a,b가 각 리스트의 메모리 주소를 가리킨다

 

그림7. list a,b를 선언

 

b=a를 한다면 b는 더 이상 [3,2,1]을 가리키지 않고 [1,2,3]을 가리킨다

 

그림8. b=a를 한 상태

 

b=a를 한 상태에서 a의 원소를 변경하면 b의 원소도 동일하게 변경됨

 

그림9. b=a를 한 상태에서 a를 조작하면

 

b=a[:]를 이용해서 원본 복사를 하면 다르게 조작할 수 있다

 

혹은 import copy, copy.deepcopy()를 이용한다

 

그림10. 원본 복사를 이용해 서로 다르게 리스트를 조작

 

TAGS.

Comments