【发布时间】:2015-11-15 11:21:52
【问题描述】:
在我运行这段小代码后,它总是会返回一个包含完全相同的较小列表的列表...
import time
from random import randint
t = [0,0]
a = []
def rec():
a.append(t)
for i in range(10):
t[0] = randint(10,20)
t[1] = randint(40,500)
rec()
time.sleep(.0001)
print a
我得到这样的输出,为什么?
[[17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134], [17, 134]]
【问题讨论】:
-
你正在重用
t指向的列表。 -
你可以说
a.append(list(t)),它会先复制t。 -
你想得到什么?
-
您每次都附加 same 列表,
t始终是同一个列表,更改列表将更改相同列表所在的列表。赋值、作为参数发送给函数或返回只是意味着您为同一个对象获得了另一个名称。
标签: python list python-2.7