我有以下内容将一个列表除以另一个列表(它们是向量):
from operator import truediv
x = [1,0,0,7]
y = [2,3,0,5]
z = map(truediv,x,y)
有没有办法跳过y向量中的0?希望不要添加太多的迭代。我的实际列表显然比这个更长(每个大约1200个元素),而且还有很多。
答案 0 :(得分:3)
您可能需要以下内容:
from __future__ import division
z = [xx / yy for xx, yy in zip(x, y) if yy]
# or
default = 0 # just a guess...
z = [xx / yy if yy else default for xx, yy in zip(x, y)]
在迭代过程中进行过滤是列表推导比在更具功能性的编程风格(例如,使用map
)中更具表现力的事情之一。当map
更方便时(例如,当应用的函数更复杂时),是次,但对于这个简单的情况,我会使用列表理解(或生成器)表达)。