考虑以下内容,我有2个预先存在的列表wnv和wdv,并希望按如下方式创建2个新列表Av和Bv;
Av,Bv=[(zeta*wn*dt,wd*dt) for i,(wn,wd) in zip(wnv,wdv)]
其中zeta和dt只是一个数字 能做到吗?使用上面的代码,我得到了错误:解压缩不可迭代的float对象
答案 0 :(得分:2)
您接近了,您只需要在最后解压缩结果即可:
Av,Bv = zip(*[(zeta*wn*dt,wd*dt) for (wn,wd) in zip(wnv,wdv)])
(并从您的代码中删除i
)
答案 1 :(得分:0)
当zip创建一个元组列表(每个元组具有2个元素)时,该错误就会显示出来,并进行迭代。在这里,只有元组(wn,wd)是从被迭代的列表中获取的,而不是变量i。
以下代码应该可以正常工作:
Av,Bv = zip(*[(zeta*wn*dt,wd*dt) for (wn,wd) in zip(wnv,wdv)])
PS,请注意,最终结果Av和Bv实际上是元组而不是列表。