TypeError:'int'对象不可迭代,而for循环中的循环

时间:2017-06-23 09:17:17

标签: python for-loop while-loop scrapy typeerror

我正在使用Python进行编码并尝试学习scrapy的东西......

我运行代码时总是遇到同样的错误,但我不明白为什么...... 这是我的代码:

    avgcost_tot = response.xpath('//div[@class="jsFacetListing mgFacetListing mgFOpen"][1]/div[@class="mgFAllList"][1]/ul/li/label/span/text()').re(r'\<?(.*[\d]*)\€+')

    if (len(avgcost_tot) != 0):
        avgcost = [avgcost_tot[i].split(' ') for i in range(len(avgcost_tot))]
        for i in range(len(avgcost)):
            avgcost[i].remove(avgcost[i][1])
        for i in range(1,len(avgcost)-1):
            avgcost[i].remove(avgcost[i][2])
            while avgcost[i] != '':
                avgcost[i] = int(sum(list(map(int, avgcost[i])))/len(avgcost[i]))

我在这些之前和之后有很多行,但我知道我的错误来自这里。 错误是:TypeError: 'int' object is not iterable ...

有人帮我这个吗?

1 个答案:

答案 0 :(得分:0)

这里:

avgcost[i] = int(sum(list(map(int, avgcost[i])))/len(avgcost[i]))

以及更确切地说:

map(int, avgcost[i])

您将整数传递给map()。好吧,在while循环的第二次迭代中,至少它是一个整数(作为第一次迭代的结果)。

当我们在它的时候,如果它没有引发,这个循环可能是无限的,因为int不会等于空字符串。实际上我在这里看不到while循环的重点。

此外,您不需要将map()的结果传递给list - 在Python2中它已经是list,而在Python3中它将是一个可迭代的直接传递给sum()。由于整数之和将是一个整数,因此将sum()的结果传递给int()也是无用的。