여기서 두 가지 문제가 발생했습니다. 첫 번째 문제는 위에서 언급한 대로 a[0]의 값을 수정했지만 변경된 내용을 i放入列表去处理, 或者说, 你漏了把i질문의 코드에 기록하지 않았습니다. 올바른 방법:
으아악
두 번째 질문은 위에서 질문하신 내용인데 왜 a=[[0,0]]*5의 정의 방법이 모두 a=[[ 7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]a=[[0,0]]*5这种定义方法, 结果出来发现全部都是a=[[7, 0], [7, 0], [7, 0], [7, 0], [7, 0]] 这个问题和第一个问题有个相同之处, 就是你应该是忘了写a[i][0] = i + 3, 其次就是: 如果用[[0, 0]] * 5이 질문은 첫 번째 질문과 한 가지 공통점이 있습니다. a[i][0] = i + 3을 쓰는 것을 잊어버렸습니다.
두 번째 단계는: [[0, 0]] * 5 목록을 사용하여 생성된 경우입니다. , 그 안의 모든 것은 참조이며 5개 객체가 아닌 모두 동일한 객체입니다. 예를 참조하세요:
으아악
id值看到, 他们都是一样的地址, 所以列表中的5个对象, 全是同一个, 所以当你执行a[i][0]= i+3통과 할 수 있으면 아무리 많은 요소를 수정해도 결국에는 같은 목록만 수정하게 됩니다!
그래서 원하는 효과를 해보고 싶다면 해당 방법을 사용하여 목록을 빠르게 생성할 수는 없지만, 다음 방법만 사용할 수 있습니다:🎜
으아악
여기서 두 가지 문제가 발생했습니다.
으아악첫 번째 문제는 위에서 언급한 대로 a[0]의 값을 수정했지만 변경된 내용을
i
放入列表去处理, 或者说, 你漏了把i
질문의 코드에 기록하지 않았습니다.올바른 방법:
두 번째 질문은 위에서 질문하신 내용인데 왜
두 번째 단계는:a=[[0,0]]*5
의 정의 방법이 모두a=[[ 7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]
a=[[0,0]]*5
这种定义方法, 结果出来发现全部都是a=[[7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]
这个问题和第一个问题有个相同之处, 就是你应该是忘了写
a[i][0] = i + 3
,其次就是: 如果用
[[0, 0]] * 5
이 질문은 첫 번째 질문과 한 가지 공통점이 있습니다.a[i][0] = i + 3
을 쓰는 것을 잊어버렸습니다.[[0, 0]] * 5
목록을 사용하여 생성된 경우입니다. , 그 안의 모든 것은 참조이며 5개 객체가 아닌 모두 동일한 객체입니다. 예를 참조하세요:으아악
그래서 원하는 효과를 해보고 싶다면 해당 방법을 사용하여 목록을 빠르게 생성할 수는 없지만, 다음 방법만 사용할 수 있습니다:🎜 으아악id
值看到, 他们都是一样的地址, 所以列表中的5个对象, 全是同一个, 所以当你执行a[i][0]= i+3
통과할 수 있으면 아무리 많은 요소를 수정해도 결국에는 같은 목록만 수정하게 됩니다!
반복하려면 i 변수를 사용해야 하기 때문에 항상 0을 변경하면 당연히 a[0]이 덮어쓰여지고 마지막 값이 됩니다
으아악첫 번째 코드에서는 a=[3,4를 얻을 수 없습니다. ,5, 6,7], i 변수를 사용해야 합니다
두 번째 코드:
으아악코드를 잘못 쓴 것 같은데, 이런 질문을 하시고 싶으신 것 같아요
으아악인쇄 가능
으아악@Lin_R 맞습니다
사실 두 번째 방법은 따로가 아닌 공유하고 있습니다. 현재로서는 목록이고 가변적이지만 첫 번째 방법은 숫자이고 변경할 수 없기 때문입니다.