我正在尝试生成一个数组,该数组是前两个数组的总和。 e.g
c = [A + B for A in a and B in b]
在此处,收到错误消息
NameError: name 'B' is not defined
,其中
len(a) = len(b) = len(c)
请你告诉我我做错了什么。感谢。
答案 0 :(得分:2)
布尔and
运算符不会将迭代连接在一起,它会评估其两个操作数的真实性(或 falsiness )。
您正在寻找的是zip
:
c = [A + B for A, B in zip(a, b)]
两个迭代中的项目被连续分配到A
到B
,直到其中一个用尽。 B
现已定义!
答案 1 :(得分:0)
应该是
c = [A + B for A in a for B in b]
for
代替and
。您可能需要考虑使用numpy,您可以直接添加2个矩阵,效率更高。
答案 2 :(得分:0)
'for'不能按您希望的方式工作。 你可以使用zip()。
A = [1,2,3]
B = [4,5,6]
c = [ a + b for a,b in zip(A,B)]
zip遍历A& B并产生元组。 要看看这是什么样的尝试:
[ x for x in zip(A,B)]