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.
我不确定我是否完全得到它,但我认为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)
我不认为列表理解会非常干净.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |