Я часто обнаруживаю, что делаю неэффективные циклы как таковые:
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)
Расчет прост, он просто обрабатывает типы операторов if, которые меня получают.Кстати, это подкласс кортежа, в котором оператор добавления добавляет аналогичные значения индекса, например, (1, 2, 3) + (4, 5, 6, 7) == (5, 7, 9, 7)
.Я бы подумал, что filter()
поможет мне в этом, но я не уверен, как бы это реализовать.
РЕДАКТИРОВАТЬ: Это для Python 3.