我正在学习python(以前有一点c经验),正在尝试解决数学问题,但是遇到了意外情况:
import math
list_a = list_b = [0 for k in range(10)]
print list_a[0] #test if list_a works]
for i in range(10):
list_a[i] = math.sqrt(math.pi + i**2)
print list_a[i] #value
list_b[i] = math.sqrt(list_a[i]**2 + math.pi**2)
print list_a[i] #why changed to another value?
print '-----------------'
为什么在这行之后:
list_b[i] = math.sqrt(list_a[i]**2 + math.pi**2)
在list_a[i]
改变了吗?
list_a
和list_b
是同一对象的标签。如果您想让它们成为副本,请执行以下操作:
list_a = [0 for k in range(10)]
list_b = list_a[:]
另一种方法是使用列表推导和python的多个分配:
list_a, list_b, list_c = [[0 for k in range(10)] for i in range(3)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句