Как отмечалось, вы можете использовать zip
, чтобы получить list
из tuple
с, следующим образом
L = [[0.9, 0.7] ,[0.5, 0.6], [1.1, 1.2]]
L2 = list(zip(*L))
print(L2) #[(0.9, 0.5, 1.1), (0.7, 0.6, 1.2)]
, которое можно преобразовать в list
из list
с, следующим образом
L2 = [list(i) for i in L2]
print(L2) #[[0.9, 0.5, 1.1], [0.7, 0.6, 1.2]]
Тогда, если вы используете Python2, вы можете использовать reduce
, что без import
невозможно в Python3, поэтому вам нужно самостоятельно реализовать умножение с уменьшением, я бы сделал это следующим образом:
def mult(x):
while len(x)>=2: x[:2] = [x[0]*x[1]]
return x[0]
Обратите внимание, что я предположил, что в вашем списке не менее 1 элемента, и данные в вашем списке верны (могут быть умножены), и вам больше не понадобится список после подачи его в mult
, рассмотрите следующий пример:
t = [9,5,3]
mt = mult(t)
print(mt) # 135 as you might expect
print(t) # [135] i.e. list with 1 element equal to value returned by mult
Если это не проблема в этом случае, вы можете сделать:
a = sum([mult(i) for i in L2])
print(a) # 0.9990000000000001
Однако, если вы хотите сохранить оригинальный список и использовать mult
, то вы можете использовать копию списка, например:
k = [3,10,5]
mk = mult(k[:])
print(mk) # 150
print(k) # [3,10,5]
Обратите внимание, что mult
, как показано, может быть легко переработан для использования любой арифметической операции.