在for循环中使用for循环

时间:2017-03-25 21:27:17

标签: python-3.x

对于给定的数组v = [1,2,3]我试图打印每个元素的乘积和s的范围为s

import numpy as np
v=[1,2,3]
for s in range(0,5):
    for i in range (0,3):
         tot= np.multiply(v[i],s)
         b.append(tot)
print (b)

我的输出是

[0, 0, 0, 1, 2, 3, 2, 4, 6, 3, 6, 9, 4, 8, 12]

我正试图将输出视为

[[0, 0, 0], [1, 2, 3], [2, 4, 6], [3, 6, 9], [4, 8, 12]]

我不太确定第二个for循环是如何在第一个for循环中运行的。如果有人可以解释,那就太棒了。

3 个答案:

答案 0 :(得分:0)

您将为外部for循环的每次迭代创建一个新列表:

v=[1,2,3]
b = []
for s in range(0,5):
    result = []
    for i in range (0,3):
         tot= np.multiply(v[i],s)
         result.append(tot)
    b.append(result)
print (b)

你可以使用*来乘以值,你可以直接迭代v(不需要使用范围)`:

v = [1, 2, 3]
b = []
for s in range(5):
    result = []
    for i in v:
        result.append(i * s)
    b.append(result)

您可以使用列表推导替换这两个循环:

b = [[i * s for i in v] for s in range(5)]

答案 1 :(得分:0)

import numpy as np
v=np.array([1,2,3])
b=[]
for s in range(0,5):
    b.append(list(v*s))
print (b)

应该做你想做的事。不要忘记numpy极其强大的broadcasting能力。

答案 2 :(得分:0)

v=[1,2,3]
b=[]
for s in range(0,5):
    b.append([])
    for i in range (0,3):
        tot= np.multiply(v[i],s)
         b[s].append(tot)    
print(b)