对于给定的数组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循环中运行的。如果有人可以解释,那就太棒了。
答案 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)