如下面的一段代码所示:
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]]
|