당신이 묘사 한 행동 (당신이 설명했듯이)은 불가능합니다.
목록을 만드는 경우 각 하위 목록이 다른 목록인지 확인해야합니다. 다음을 고려하십시오.
a = []
b = [a, a]
여기 두 개의 하위 목록이 모두 똑같은 목록을 만들었습니다. 하나를 변경하면 두 가지 모두에 표시됩니다. 예컨대 : 자주 목록이 동작을 볼 수
>>> a = []
>>> b = [a, a]
>>> b[0].append(1)
>>> b
[[1], [1]]
*
연산자를 사용하여 초기화 :
a = [[None]*7]*7
예를
>>> a = [[None]*7]*7
>>> a
[[None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None]]
>>> a[0][1] = 3
>>> a
[[None, 3, None, None, None, None, None], [None, 3, None, None, None, None, None], [None, 3, None, None, None, None, None], [None, 3, None, None, None, None, None], [None, 3, None, None, None, None, None], [None, 3, None, None, None, None, None], [None, 3, None, None, None, None, None]]
수정이 외측리스트에 *
7을 사용하지 않는 것이다 (None
는 불변이므로 내부 목록 OK 임) :
a = [[None]*7 for _ in range(7)]
예 :
>>> a = [[None]*7 for _ in range(7)]
>>> a[0][1] = 3
>>> a
[[None, 3, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None], [None, None, None, None, None, None, None]]
재현되지 않음 새 목록에있는 모든 사람들을 분리합니다 목록을 수정하기 전에. – thefourtheye
재현 할 수 없습니다. 파이썬 인터프리터에서이 모든 것을 직접 실행할 수 있습니까? 어떤 파이썬을 사용하고 있습니까? – lpapp
NumPy 행렬 또는 동일한 목록에 대한 여러 참조가있는 경우에도 마찬가지입니다. 실제 통역 세션을 보여 주시겠습니까? – user2357112