二维列表索引赋值的问题
maplist = []twolist = []
for j in range(10):
twolist.append(' ')
for i in range(10):
maplist.append(twolist)
maplist = '石柒'
for i in maplist:
print(i)
提问:
为什么maplist = '石柒' 会赋值给所有子列表的第4个元素呢,
这样的索引不应该是赋值给 maplist 第3个"元素"(列表), 的第4个元素呢? (如图中选中的'石柒') 在线等,{:10_266:} 打印也只是提取一个元素出来而已啊......{:5_94:} !!!!!!!!!!!!!!我知道了, 内存指向问题!!
因为你所有列表中的列表都是添加一个 twolist 列表啊
所以只要一个改变,其他肯定会变,因为是同个列表,id 内存地址相同
maplist = []
twolist = []
for j in range(10):
twolist.append(' ')
for i in range(10):
temp = twolist.copy()
maplist.append(temp)
# 这样就可以了, 初学者掉坑!
maplist = '石柒'
for i in maplist:
print(i)
a315734685 发表于 2020-8-22 22:38
!!!!!!!!!!!!!!我知道了, 内存指向问题!!
对,改成这样就行,通过直接列表切片,等价于 copy 浅拷贝:
maplist = []
twolist = []
for j in range(10):
twolist.append(' ')
for i in range(10):
maplist.append(twolist[:])
maplist = '石柒'
for i in maplist:
print(i) a315734685 发表于 2020-8-22 22:40
maplist = []
twolist = []
for j in range(10):
呃,每次回复都比你慢几秒
既然问题已经解决,那么就设置下最佳答案结账吧
页:
[1]