2016-11-18 32 views
0

我有以下的由另一划分一个列表(它们是矢量):分母列表除以名单由另一个与一些“0”

from operator import truediv 
x = [1,0,0,7] 
y = [2,3,0,5] 
z = map(truediv,x,y) 

有没有办法跳过0在y矢量?希望不要添加太多迭代。我的实际列表显然比这更长(每个约1200个元素),并且有很多。

+0

当'y'中的数字为0时'z'中发生了什么?例如,该项目是否必须被忽略或者你想要'x'的值? –

回答

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更方便(例如,当被应用的功能更复杂),但对于这个简单的情况,我会与列表理解(或生成器表达式)去。

+0

是的!只有第二个选项!我不想删除任何元素,即使分母是0 – Ecanales

+0

@Ecanales - 是的,你没有明确说明你想要发生的情况,所以我试着用几个选项来回答像他们可能是合理的。 – mgilson

相关问题