我有以下程序,它成功地创建了一个用零填充的10x20数组:
array2 = []
array2=[[0 for j in range(10)] for i in range(20)]
print array2
然后,我尝试使用for循环和while循环执行相同的操作:
for j in range(20):
for i in range(10):
array1.append(0)
print array1
array3 = []
count = 0
while count <= 20:
count += 1
while count <= 10:
array3.append(0)
count += 1
print array3
我觉得我在正确的轨道上,但我似乎不能用这些循环来创建相同的东西。如何调整这些循环以创建与第一个循环相同的效果?谢谢。
发布于 2016-03-10 23:05:57
您需要在外部for/while循环中创建一个临时列表,您可以在内部for/while循环中填充该列表。
首先:
>>> for j in range(20):
... temp=[]
... for i in range(10):
... temp.append(0)
... array1.append(temp)
...
>>> array1
第二:
>>> count=0
>>> array3=[]
>>> while count < 20:
... temp=[]
... count_inner=0
... count+=1
... while count_inner< 10:
... temp.append(0)
... count_inner+=1
... array3.append(temp)
>>> array3
使用while循环检查中的条件,您正在创建21 X 11矩阵。
发布于 2016-03-10 22:57:17
在第一个示例中,将长度为10的数组添加到更大的数组中。所以你需要创建两个数组。
array1 = []
array2 = []
for j in range(20):
for i in range(10):
array1.append(0)
array2.append(array1)
array1 = []
print array2
这相当于
array2=[[0 for j in range(10)] for i in range(20)]
发布于 2016-03-10 22:59:58
在您的第一个示例中,您得到了一个数组数组。如果你看这行,你可以看到你有[[] <-内部数组]<-外部数组。
在您的其他数组中,您只是创建了一个非常长的从零到追加的数组。与for循环等效的是类似于以下内容的内容:
arr = []
for i in range(20):
arr.append([])
for j in range(10):
arr[i].append(0)
for thing in arr:
print thing
https://stackoverflow.com/questions/35919791
复制相似问题