有什么方法可以把它变成列表理解

Tyl*_*ton 1 python optimization list-comprehension

我经常发现自己做了低效的循环:

def __add__(self, other):
    dimensions = []
    for i in range(max(self.numberOfDimensions, other.numberOfDimensions)):
        a = None    
        if i < self.numberOfDimensions:
            a = self[i]     
        b = None    
        if i < other.numberOfDimensions:
            b = other[i]    

        # Doesn't actually do the right thing here.
        dimensions.append(sum(map(lambda x: ((x is None) and 1 or 2) - 1, (a, b))))

    return self.__class__(dimensions)
Run Code Online (Sandbox Code Playgroud)

计算很简单,它只是处理得到我的if语句类型.顺便说一下,这是元组的子类,其中add运算符添加类似的索引值(1, 2, 3) + (4, 5, 6, 7) == (5, 7, 9, 7).我认为这filter()对我有所帮助,但我不确定我是如何实现它的.

编辑:这是为Python 3.

Ada*_*mKG 6

我不确定我是否完全得到它,但我认为stdlib是你的朋友:

from itertools import izip_longest
dimensions = []
for a, b in izip_longest(self, other, fillvalue=0):
    dimensions.append(a + b)
Run Code Online (Sandbox Code Playgroud)

我不认为列表理解会非常干净.