尽管可以安全地初始化列表:
lst = [0] * 3
相同的技巧不适用于2D列表(列表列表):
>>> lst_2d = [[0] * 3] * 3>>> lst_2d[[0, 0, 0], [0, 0, 0], [0, 0, 0]]>>> lst_2d[0][0] = 5>>> lst_2d[[5, 0, 0], [5, 0, 0], [5, 0, 0]]
运算符*复制其 *** 作数,并且用[]构造的重复列表指向同一列表。正确的方法是:
>>> lst_2d = [[0] * 3 for i in xrange(3)]>>> lst_2d[[0, 0, 0], [0, 0, 0], [0, 0, 0]]>>> lst_2d[0][0] = 5>>> lst_2d[[5, 0, 0], [0, 0, 0], [0, 0, 0]]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)