TypeError:只能将列表(不是“float”)连接到列表

时间:2013-10-10 02:25:31

标签: python

我有一大堆代码,用于打印带有数字的单词。

import Lab4

def priceList(myList):
   for item in myList:
      result = Lab4.getGroceryList() + Lab4.getPrice(item)
print(result)

但是当我运行它时,python会抛出此错误

Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
print(priceList(myList))
File "C:/Users/Christopher/Desktop/Lab4/total.py", line 5, in priceList
result = Lab4.getGroceryList() + Lab4.getPrice(item)
TypeError: can only concatenate list (not "float") to list

我不知道为什么会抛出我正在调用的代码

def getPriceList():
    global price_list;
    result = [];
    f = open("price_list.txt","r");
    for line in f:
        temp = line.split(" ");
        item = [ temp[0].strip() ];
        item = item + [ float(temp[1])];
        result = result + [ item ];
    price_list = result;
    return result;

getPrice函数返回传递的项目的价格 作为参数。如果该项目不在价目表中,则返回0.0。

def getPrice(item):
    if len(price_list) == 0:
        getPriceList()
    for line in price_list:
        if item == line[0]:
            return line[1];
    return 0.0;

为什么会失败?

3 个答案:

答案 0 :(得分:1)

您无法一起添加列表和浮动。将float添加到列表中,如下所示:

result = Lab4.getGroceryList()
result.append(Lab4.getPrice(item))

或者在添加之前将浮动放入列表中。像这样:

result = Lab4.getGroceryList() + [Lab4.getPrice(item)]

另外,请不要在python中使用分号!

答案 1 :(得分:1)

你在这里做到了:

result = result + [ item ];

虽然有更多经验,但你会把它写成:

result.append(item)

代替。这里需要同样的事情:

  result = Lab4.getGroceryList() + Lab4.getPrice(item)

如果getGroceryList()返回一个列表,而getPrice(item)返回一个浮点数,则不能只添加它们。类似于你在其他地方所做的,

  result = Lab4.getGroceryList() + [Lab4.getPrice(item)]

会奏效。好吧,它会孤立地工作。您的priceList()函数也有其他问题; - )

答案 2 :(得分:1)

如果要将加法运算符与列表一起使用,则需要先将浮点数转换为列表。加法运算符基本上类似于extend方法,因此在这种情况下,两个操作数都必须属于列表类型。

result = Lab4.getGroceryList() + [Lab4.getPrice(item)]

虽然由于价格已经不是一个列表,因此将它附加到您的列表更有意义,如下所示:

result = Lab4.getGroceryList().append(Lab4.getPrice(item))