파이썬(Python)/문법

list copy [:] 리스트안에 콜롬(:) 사용하는 이유

끄적끄적아무거나 2020. 12. 14. 10:23
반응형

코드>>

a_var = [0,1,2,3]
b_var = a_var
c_var = a_var.copy()
d_var = a_var[:]

print(type(a_var))

print(a_var)
print(b_var)
print(c_var)
print(d_var)

print(id(a_var))
print(id(b_var))
print(id(c_var))
print(id(d_var))

 

결과>>

<class 'list'>
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
3000420137536
3000420137536
3000421627328
3000421627136

 

 

주석>>

파이썬은 객체 언어이다. int 값을 정하는 것도 모두 객체이다.

 

위 코드는 리스트 값을 복사하는 여러 방법을 표현했다.

 

type에서 볼 수 있듯이 리스트도 class에 들어가 있다. 객체 내에는 포인터가 있는데 포인터를 통해서 해당 값이 어디 있는지 알려준다. 

 

단순히 b_var = a_var 했을 경우 a_var의 값의 위치를 b_var의 포인터가 취할 뿐이다.

 

[:]처럼 리스트안에 콜롬을 넣으면 값을 복사해오는 것이다. 그래서 복사해온 값을 새로운 위치에 넣고 이 위치를 포인터에 기록한 것이다.

 

copy는 list에 들어가있는 함수 인데 [:]와 같은 기능을 한다.

 

메모리 위치를 보면 주석의 내용을 이해할 수 있다.

 

 

 

반응형