파이썬의 함수에서 목록 사용

사용자 7387342

아래 코드에서 무슨 일이 일어나고 있는지 이해할 수 없습니다.

#swaps list in index 1
L=[[1,2],[3,4]]
def swap(X):
  beta=X[:]
  beta[1][0],beta[1][1]=beta[1][1],beta[1][0]
  return beta
def code(W):
  alpha=W[:]
  print swap(alpha)
  return swap(alpha)
print code(L)

그것은 출력을 제공합니다

[[1, 2], [4, 3]]
[[1, 2], [3, 4]]

내가 기대하는 동안

[[1, 2], [4, 3]]
[[1, 2], [4, 3]]
Keiwan

그 이유는

alpha = W[:]    # and also beta=X[:]

목록 얕은 복사본 만 만듭니다 . 이것은 외부 목록 실제로 복사 된다는 것을 의미합니다 . 이 외부 목록은 다시 더 많은 목록에 대한 참조를 포함합니다.이 목록은 복사되지 않습니다 ( 참조 만 해당 ).

그래서 사본 alpha과는 beta항상 언급하는 같은 중첩 된 목록 및 이러한 목록의 요소를 교환. 이것이 호출 후 스와핑이 두 번 일어나는 것을 볼 수있는 이유입니다.

swap(alpha)

두번.

깊은 사본을 만들고 싶다면 copy모듈을 사용하고

alpha = copy.deepcopy(W)   # instead of alpha = W[:]

beta= copy.deepcopy(X)     # instead of beta = X[:]

이렇게하면 예상 출력이 제공됩니다.

[[1, 2], [4, 3]]
[[1, 2], [4, 3]]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

수레 목록에서 파이썬 함수 any () 사용

분류에서Dev

함수 파이썬에서 목록 사용

분류에서Dev

파이썬의 루프에서 정수 유형 목록 사용

분류에서Dev

한 함수에 정의 된 목록을 다른 함수에서 사용합니다. 파이썬 2.7

분류에서Dev

'del'을 사용하여 파이썬의 목록 목록에서 항목 삭제

분류에서Dev

파이썬에서 목록과 함께 문을 사용할 수 있습니까?

분류에서Dev

파이썬의 사전에 키워드 인수로 함수 목록 줄이기

분류에서Dev

파이썬에서 사전의 키로서의 튜플 목록

분류에서Dev

파이썬에서 두 사전 목록의 차이점 찾기

분류에서Dev

파이썬에서 사전 목록의 요소에 액세스

분류에서Dev

단일 목록의 항목에서 색인을 사용하여 새 파이썬 목록 만들기

분류에서Dev

사용자 함수로 파이썬 목록 정렬. (오류)

분류에서Dev

람다 함수를 사용하는 파이썬 정렬 목록

분류에서Dev

파이썬의 파일 목록에 명령 적용

분류에서Dev

파이썬에서 사전의 중첩 된 목록을 변환

분류에서Dev

사전 내의 목록에서 한 단어 인쇄 (파이썬)

분류에서Dev

파이썬의 사전 목록에서 요소 추출

분류에서Dev

파이썬에서 목록의 목록을 복사하는 방법?

분류에서Dev

파이썬에서 사전을 목록으로 사용

분류에서Dev

파이썬 중간 시험의 작업, 사전에 목록, 목록에 사전

분류에서Dev

어떻게 파이썬에서, 같은 이름의 함수를 호출 목록에서 문자열을 사용합니까?

분류에서Dev

파이썬 : 사전 항목 목록의 사전 목록에 대한 목록 이해

분류에서Dev

파이썬에서 목록 (목록 목록)의 목록 교차

분류에서Dev

for 루프를 사용하여 파이썬에서 여러 목록을 하나의 목록으로 병합

분류에서Dev

파이썬에서 합계와 함께 목록을 사용하는 경우

분류에서Dev

파이썬에서 빈 목록에 인덱스 사용

분류에서Dev

파이썬에서 목록과 중첩 목록 사이의 공통 목록 요소 가져 오기

분류에서Dev

파이썬의 함수에서 목록 반환

분류에서Dev

파이썬 목록에서 사용자 지정 단어 제거

Related 관련 기사

  1. 1

    수레 목록에서 파이썬 함수 any () 사용

  2. 2

    함수 파이썬에서 목록 사용

  3. 3

    파이썬의 루프에서 정수 유형 목록 사용

  4. 4

    한 함수에 정의 된 목록을 다른 함수에서 사용합니다. 파이썬 2.7

  5. 5

    'del'을 사용하여 파이썬의 목록 목록에서 항목 삭제

  6. 6

    파이썬에서 목록과 함께 문을 사용할 수 있습니까?

  7. 7

    파이썬의 사전에 키워드 인수로 함수 목록 줄이기

  8. 8

    파이썬에서 사전의 키로서의 튜플 목록

  9. 9

    파이썬에서 두 사전 목록의 차이점 찾기

  10. 10

    파이썬에서 사전 목록의 요소에 액세스

  11. 11

    단일 목록의 항목에서 색인을 사용하여 새 파이썬 목록 만들기

  12. 12

    사용자 함수로 파이썬 목록 정렬. (오류)

  13. 13

    람다 함수를 사용하는 파이썬 정렬 목록

  14. 14

    파이썬의 파일 목록에 명령 적용

  15. 15

    파이썬에서 사전의 중첩 된 목록을 변환

  16. 16

    사전 내의 목록에서 한 단어 인쇄 (파이썬)

  17. 17

    파이썬의 사전 목록에서 요소 추출

  18. 18

    파이썬에서 목록의 목록을 복사하는 방법?

  19. 19

    파이썬에서 사전을 목록으로 사용

  20. 20

    파이썬 중간 시험의 작업, 사전에 목록, 목록에 사전

  21. 21

    어떻게 파이썬에서, 같은 이름의 함수를 호출 목록에서 문자열을 사용합니까?

  22. 22

    파이썬 : 사전 항목 목록의 사전 목록에 대한 목록 이해

  23. 23

    파이썬에서 목록 (목록 목록)의 목록 교차

  24. 24

    for 루프를 사용하여 파이썬에서 여러 목록을 하나의 목록으로 병합

  25. 25

    파이썬에서 합계와 함께 목록을 사용하는 경우

  26. 26

    파이썬에서 빈 목록에 인덱스 사용

  27. 27

    파이썬에서 목록과 중첩 목록 사이의 공통 목록 요소 가져 오기

  28. 28

    파이썬의 함수에서 목록 반환

  29. 29

    파이썬 목록에서 사용자 지정 단어 제거

뜨겁다태그

보관