내 프로그램에 문제가 발생했습니다. 메서드에서 사용되는 모든 것을 메서드에서 사용 된 매개 변수 변수에 저장합니다.메서드는 변수를 원래 매개 변수 변수로 반환합니다.
다음은 예입니다. 목록의 요소를 주어진 공백만큼 왼쪽으로 이동하는 방법입니다.
def moveLeft (perm, pos, spaces):
permTemp = perm
for n in range(spaces):
charMoved = permTemp[pos-n]
permTemp [pos-n] = permTemp[pos-n-1]
permTemp[pos-n-1] = charMoved
return permTemp
permO = [0,1,2,3] #original perm
print moveLeft(permO, -1, 2)
print moveLeft(permO, -1, 2)
print permO
(가)의 출력이 될 것으로 예상 : 제 2 개가 동일하게 원래 목록 ([0,1,2으로 마지막 출력 (이 방법의 동일한 리턴 값 인쇄되기 때문에), 삼]). 대신 내가 얻을 :
>>>
[0, 3, 1, 2]
[0, 2, 3, 1]
[0, 2, 3, 1]
, 지금은 더 많은 의미가 있습니다! 이것은 이전에이 문제가 발생하지 않았기 때문에 Java에서 일어나는 일과는 달라야합니다! –
아니요, 자바는 똑같은 일을 할 것이고 객체에 대한 참조도 사용하므로'int [] arr = {1,2,3}; int [] arr2 = arr; arr2 [1] = -2;'는 원래 배열을 수정합니다. 실제 사본을 만들 수있는'System.arrayCopy()'메소드가 있습니다. – dimo414