TypeError:' int'对象不可迭代

时间:2017-04-15 11:05:47

标签: python typeerror

执行此代码时出错 -
for len in len(str_list): TypeError:' int'对象不可迭代

我该如何解决? (Python 3)

dirname(__FILE__)."views/site/image/".$yourfilename

3 个答案:

答案 0 :(得分:6)

你试图以整数形式循环; len()会返回一个。

如果必须在整数序列上产生循环,请使用range() object

for i in range(len(str_list)):
    # ...

通过将len(str_list)结果传递给range(),您会得到一个从零到str_list长度的序列,减一(因为不包括结束值)。

请注意,现在您的i值将是用于计算平均值的不正确的值,因为它比实际列表长度 !您希望除以len(str_list)

return str_sum / len(str_list)

但是,在Python中有不需要来执行此操作。循环遍历列表本身的元素。这消除了首先创建索引的需要:

for elem in str_list
    str_sum += len(elem)

return str_sum / len(str_list)

顺便说一下,所有这些都可以用sum() function表示一行:

def str_avg(s):
    str_list = s.split()
    return sum(len(w) for w in str_list) / len(str_list)

我将名称str替换为s;最好不要屏蔽内置类型名称,这可能会导致以后混淆错误。

答案 1 :(得分:0)

median

答案 2 :(得分:0)

For循环需要多个项目来迭代,如[1,2,3]列表(包含3个项目/元素)。

len函数返回单个项目,该项目是您将其作为参数提供的对象长度的整数。

要让某些东西迭代的次数与对象的长度一样多,您可以将len函数结果提供给范围函数。这将创建一个iterable,允许您随意迭代所需对象的长度。

所以做一些像

这样的事情
for i in range(len(str_list)):

除非您想查看列表而不是列表的长度。然后,您可以使用

进行迭代
for i in str_list: