컴맹탈출기/Python을 파보자
파이썬 for 문으로 list 원소 수정 시 유의할 점
Buddycial_SSAFY
2020. 9. 19. 01:01
배열의 원소에 접근하여, 값을 바꿔주고 싶었는데
파이썬 for문의 원리를 잘 몰라서 헛탕을 치고 있었다.
나는 cols라는 배열의 모든 원소에 1을 더하고 싶었고, 다음과 같이 코드를 짰다.
for x in range(cols):
x+=1
그런데 cols배열 내부가 전혀 변화가 없는 것이 아닌가?
하지만 x는 분명 증가하고 있었다.
불현듯 C에서 포인터를 배우며 swap 함수를 구현할 때 배운 내용이 생각났다.
매개변수로 넘겨준 값을 복사만 해서 새로운 공간에 값을 저장하기 때문에, 해당 함수에서 아무리 값에 변형을 가해도 main함수로 넘어오면 값은 변화가 없다.
주소값에 접근한 것이 아니고 주소값에 있는 값에 접근, 이를 복사만 해온 것에 변형을 가했기 때문이다.
그래서 다음과 같이 주소값에 접근해보았다.
for i in range(len(cols)):
cols[i]+=1
그랬더니 cols 배열의 원소 값에 변화가 생긴것을 확인했다!