查找列表中项目的平均长度。蟒蛇

时间:2013-04-02 19:11:16

标签: python string list average

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]

2 个答案:

答案 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分配了列表中每个项目的值,但更改它不会更改原始列表。 其次,您似乎尝试将列表中的每个项目映射到其长度,而不是其项目的平均长度。使用内置函数mapmap(len,lengths)可以轻松地将每个项目映射到其长度。 但是,要完成你的要求,我们需要改进一点。让我们定义一个函数来计算列表项的平均长度:

def average_len(l):
  return sum(map(len, l))/float(len(l))

现在我们可以再次使用map来获取每个子列表的平均值:map(average_len, lengths)