10.6 리스트 복사하기 (Copying Lists)- 리스트에 있는 데이터를 복사하여 다른 리스트에 넣기 위해서 하나씩 복사하여야 한다. - 아래와 같이 할당문(=)으로 복사할 수 있을 거라 생각하겠지만 list2 = list1 - 위 문법은 list1을 list2에 복사하는 문법이 아니다. 이는 단지 list1의 주소값을 list2에다 복사하는 것일 뿐이다. *list2 = list1 *리스트 주소값 예제
<실행 결과> *리스트 복사하기 예제 주소 복사
리스트 생성
10.7 함수에 리스트 전달하기(Passing Lists to Functions)- 리스트를 함수에 전달 할 때, 리스트의 내용물은 함수 호출 이후에 바뀔 수 있다. 즉 리스트는 가변적인 객체(mutable object)이다. - 리스트는 객체(object)이기 때문에, 함수에 일반 객체를 전달하듯이 리스트를 함수에 전달하면 된다. *사용 형식 def printList(lst): for element in lst: print(element) - 위 함수를 아래와 같이 전달 가능하다. printList([3,1,2,6,4,2]) *tip : 위 명령문은 리스트를 만들어 전달하지만 명시적인 주소 변수(reference value)가 없는 상태이다. 이를 익명 리스트(anonymous list)라고 부른다. - 리스트는 가변 객체(mutable object)이기 때문에 함수 내부에서 내용물이 바뀔 수 있다. *리스트 함수 호출 예제(PassListArgument.py)
>> - m(numuber, numbers)함수의 number은 불가변적, numbers는 가변적 객체이므로 x는 함수 밖에서는 1인 상태로 바뀌지 않는다. - 그리고 디폴트 리스트(a list as a default argument)를 다룰 때 또 다른 문제점이 있다. * 디폴트 리스트 함수 호출 예제(DefaultListArgument.py)
<실행 결과> - Lint 8 에서, 디폴트 값(default value) '[ ]'으로 함수의 인자(argument) lst가 생성되었다. - 디폴트 값은 오직 한번만 생성되며, add(1)은 lst에 1을 추가한다. - Line 11 에서 한번 더 함수가 호출 될 때 lst는 [ ]가 아닌 [1]이다. - 그래서 호출 한 뒤에 lst는 [1,2]가 된다. - Line 14 에서는 리스트 요소[11, 12, 13, 14]가 주어져있다. 그리고 이 리스트가 lst로 전달 된다. - 만약 디폴트 리스트('[ ]')를 매 함수를 호출할 때 마다 사용하고 싶다면 아래와 같이 수정해야 한다. *디폴트 리스트 예제(DefaultNoneListArgument.py)
<실행 결과> - Line 3는, add 함수가 호출될 때 마다 리스트 인자 없이 새로운 빈 리스트를 생성한다. - 만약 리스트 인자가 주어 진다면, 함수가 호출 될 때 디폴트 리스트는 사용되지 않는다. 참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG ※
※ |