2016-03-10 77 views
0

我有以下的方案,其中成功地创建了一个10×20阵列用零填充:创建阵列具有用于和while循环 - Python 2中

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 

我觉得我在正确的轨道上,但我不能似乎能够创造同样的事情与这些循环。我如何调整这些循环以创建与第一个效果相同的效果? 谢谢。

回答

2

您需要创建内部外的临时列表/ while循环,你可以在里面内部的填充/ 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×11矩阵的条件。

2

在第一个中,您将长度为10的数组添加到较大的数组中。所以,你需要创建两个数组

array1 = [] 
array2 = [] 
for j in range(20): 
    for i in range(10): 
     array1.append(0) 
    array2.append(a1) 
    array1 = [] 
print array2 

那么这应该是同样喜欢

array2=[[0 for j in range(10)] for i in range(20)] 
1

在你的第一个例子中,你已经有了一个数组的数组。如果你看看这条线,你可以看到你已经有了[[] < - 内部数组] < ---外部数组。

在你的其他数组中,你只是通过追加创建一个非常长的零数组。 相当于与循环会沿着线的东西:

arr = [] 

for i in range(20): 
    arr.append([]) 
    for j in range(10): 
     arr[i].append(0) 

for thing in arr: 
    print thing