如下面的一段代码所示:
a=[1,2,3]
b=[-6,0,6]
c=[]
d=[]
for i in range(len(a)):
for j in range(len(b)):
d.append(a[i]*b[j])
c.append(d)
d.clear()
print('c={}'.format(c))
本意是想得到一个3*3的一个数组,但在循环的最后使用了d.clear()之后,c中数据被清空
c=[[], [], []]
关键出在append函数上,我将代码稍作修改,进行如下测试:
a=[1,2,3]
b=[-6,0,6]
c=[]
d=[]
for i in range(len(a)):
for j in range(len(b)):
d.append(a[i]*b[j])
print('d={}'.format(d))
c.append(d)
print('c={}'.format(c))
d.clear()
print('c={}'.format(c))
得到的结果如下:
d=[-6] d=[-6, 0] d=[-6, 0, 6] c=[[-6, 0, 6]] d=[-12] d=[-12, 0] d=[-12, 0, 12] c=[[-12, 0, 12], [-12, 0, 12]] d=[-18] d=[-18, 0] d=[-18, 0, 18] c=[[-18, 0, 18], [-18, 0, 18], [-18, 0, 18]] c=[[], [], []]
在第一次,第二次循环中d.clear()并没有清空c中的元素,只有第三次循环后,c中的元素遭到清空,故在此处加一个判断语句
a=[1,2,3]
b=[-6,0,6]
c=[]
d=[]
for i in range(len(a)):
for j in range(len(b)):
d.append(a[i]*b[j])
c.append(d[:])
print('c={}'.format(c))
得到了正确的结果:
c=[[-6, 0, 6], [-12, 0, 12], [-18, 0, 18]]



