【问题标题】:Dividing a list by another with some "0"s in the denominator list用分母列表中的一些“0”将一个列表除以另一个列表
【发布时间】:2016-11-18 14:34:30
【问题描述】:

我有以下将一个列表除以另一个列表(它们是向量):

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

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

【问题讨论】:

  • y 中的数字为0 时,z 中必须发生什么?是否必须忽略该项目,或者您是否希望拥有 x 的值?

标签: python operator-keyword


【解决方案1】:

你可能想要这样的东西:

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
  • @Ecanales -- 是的,你并没有具体说明你想在这种情况下发生什么,所以我尝试用几个看起来可能合理的选项来回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多