my_list = [['abcdefg','awdawdawd'],['awdwer'],[],'rtgerfwed','wederfrtg']]
所以我有一个列表,我想找到列表中每个子列表的平均长度
我试过这个,但似乎没有用
lengths = []
lengths = my_list
for k in lengths:
k = len(k)
print lengths
# i get this again -> [['abcdefg','awdawdawd'],['awdwer'],[],'rtgerfwed','wederfrtg']]
我希望输出为
lengths = [8,6,0,9]
答案 0 :(得分:6)
列表中每个元素的长度列表:
lengths = [len(i) for i in my_list]
平均值:
def averageLen(lst):
lengths = [len(i) for i in lst]
return 0 if len(lengths) == 0 else (float(sum(lengths)) / len(lengths))
如果是列表清单:
lengths = [averageLen(i) for i in my_list]
答案 1 :(得分:3)
首先,迭代python中的列表只会将每个项的值复制到临时变量中。事实上,在您的示例中,为k
分配了列表中每个项目的值,但更改它不会更改原始列表。
其次,您似乎尝试将列表中的每个项目映射到其长度,而不是其项目的平均长度。使用内置函数map
:map(len,lengths)
可以轻松地将每个项目映射到其长度。
但是,要完成你的要求,我们需要改进一点。让我们定义一个函数来计算列表项的平均长度:
def average_len(l):
return sum(map(len, l))/float(len(l))
现在我们可以再次使用map来获取每个子列表的平均值:map(average_len, lengths)
。