2016-11-18 30 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

相關問題