将一个列表除以另一个列表,分母列表中有一些“0”
Dividing a list by another with some "0"s in the denominator list
我用以下方法将一个列表除以另一个列表(它们是向量):
from operator import truediv
x = [1,0,0,7]
y = [2,3,0,5]
z = map(truediv,x,y)
有没有办法跳过 y 向量中的 0?希望不要添加太多迭代。我的实际列表显然比这个长得多(每个大约 1200 个元素),而且有很多。
你可能想要这样的东西:
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
更方便(例如,当应用的函数更复杂时),但对于这种简单的情况,我会选择列表理解(或生成器表达式)。
我用以下方法将一个列表除以另一个列表(它们是向量):
from operator import truediv
x = [1,0,0,7]
y = [2,3,0,5]
z = map(truediv,x,y)
有没有办法跳过 y 向量中的 0?希望不要添加太多迭代。我的实际列表显然比这个长得多(每个大约 1200 个元素),而且有很多。
你可能想要这样的东西:
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
更方便(例如,当应用的函数更复杂时),但对于这种简单的情况,我会选择列表理解(或生成器表达式)。