Получить (мультипликативное) произведение кортежа или списка?

Допустим, у меня есть

class Rectangle(object):                                               
def __init__(self, length, width, height=0):                                                   
    self.l = length                                               
    self.w = width                                                
    self.h = height                                               
    if not self.h:                                                     
        self.a = self.l * self.w                                       
    else:                                                              
        from itertools import combinations                            
        args = [self.l, self.w, self.h]                                
        self.a = sum(x*y for x,y in combinations(args, 2)) * 2
                 # original code:
                 # (self.l * self.w * 2) + \                            
                 # (self.l * self.h * 2) + \                            
                 # (self.w * self.h * 2)                                
        self.v = self.l * self.w * self.h                                           

Что все думают о строке 12?

self.a = sum(x*y for x,y in combinations(args, 2)) * 2 

Я слышал, что следует избегать явных ссылок на список индексов.

Могу ли я использовать функцию, которая действует как sum () , но только для умножения?

Всем спасибо за помощь.

6
задан Droogans 27 May 2019 в 05:51
поделиться