首页 > 开发 > Python > 正文

python 列表赋值的问题

2017-09-06 19:38:04  来源:网友分享
#coding:utf-8import randomclass SymMat(object):    def __init__(self, length=4):        self.length = length        self.matrix = [[0]*length]*length        values = range(length*2)        v = random.sample(values, length)        pprint(self.matrix)        print '------------before'        self.matrix[1][0:] = v        pprint(self.matrix)def pprint(l):    for i in l:        print ism = SymMat(5)

输出:

[0, 0, 0, 0, 0][0, 0, 0, 0, 0][0, 0, 0, 0, 0][0, 0, 0, 0, 0][0, 0, 0, 0, 0]------------before[7, 9, 4, 3, 5][7, 9, 4, 3, 5][7, 9, 4, 3, 5][7, 9, 4, 3, 5][7, 9, 4, 3, 5]

仅对列表中第一行赋值,应该仅仅改变一行的,百思不解!问题已解决,* 赋值的时候是直接引用过去的,n个列表id相等~~

解决方案

这种问题好多人都遇到,懒得再说一遍了,看链接: https://groups.google.com/d/msg/python-cn/CDV1D7vdq6E/0EO9kjVU4dcJ