使用对象

时间:2015-07-02 15:51:40

标签: python

我有ChromosomeInterval个对象列表,其中包含方法union。我想按顺序将此方法应用于列表的每个成员。我希望使用reduce使用lambda执行此操作。但是,当我这样做时,我有以下错误:

>>> result
[ChromosomeInterval('1', 0, 0, '+'), ChromosomeInterval('1', 8, 10, '+'), ChromosomeInterval('1', 10, 10, '+')]
>>> reduce(lambda x, y: x.union(y), result)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
AttributeError: 'list' object has no attribute 'union'

但是,如果我将union更改为+的经典reduce运算符用法,我会收到错误,因为ChromosomeInterval没有__add__方法:

>>> reduce(lambda x, y: x + y, result)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
TypeError: unsupported operand type(s) for +: 'ChromosomeInterval' and 'ChromosomeInterval'

这两者有什么区别?为什么union的调用对list进行调用,而对+个对象的ChromosomeInterval运算符调用?

0 个答案:

没有答案
相关问题