执行此代码时出错 -
for len in len(str_list):
TypeError:' int'对象不可迭代
我该如何解决? (Python 3)
dirname(__FILE__)."views/site/image/".$yourfilename
答案 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: