2012-12-05 64 views
1

我有一個基本的問題:
有兩個名單a1b1。 如果我打印出一個項目每個列表中,這將是一個float number,但是當我在一個循環中使用a1[i]*b1[i],它給出了一個錯誤:列表項不能相乘

TypeError: can't multiply sequence by non-int of type 'float' 

這是爲什麼?

+1

什麼語言,我們可以看到代碼? –

+0

添加您的代碼快照,將有所幫助 –

+0

對不起,我忘了提及! Python是唯一的,這裏是代碼段: – Fred

回答

3

a1b1不是浮動列表,而是浮動列表列表。

a1=[1.234, 1.234]; 
a2=[1.234, 1.234]; 
>>> a1[0]*a2[0] 
1.522756 

a3=[[1.234], [1.234]]; 

>>> a1[0]*a3[0] 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'float' 
+0

謝謝大家,發現錯誤! – Fred

1

Think @Gille可能會得到你的錯誤。

如果你想要在你的循環做的是乘法項合計,快速的方法是使用numpy的數組:

import numpy as np 
result = np.multiply(a1,b1) 

如果需要轉換回一個列表:

result = list(result)