3
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]
4

2 に答える 2

7

リスト内の各要素の長さのリスト:

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]
于 2013-04-02T19:12:34.990 に答える
3

まず、Python でリストを反復処理すると、各項目の値が一時変数にコピーされるだけです。実際、あなたの例でkは、リスト内の各項目の値が割り当てられていますが、それを変更しても元のリストは変更されません。次に、リスト内の各アイテムをそのアイテムの平均の長さではなく、その長さにマップしようとしたようです。map各項目をその長さにマッピングするには、組み込み関数:を使用して簡単に行うことができますmap(len,lengths)。ただし、ご要望を実現するには、少し改善する必要があります。リスト項目の平均の長さを計算する関数を定義しましょう:

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

これで、 map を再度使用して、各サブリストの平均を取得できます: map(average_len, lengths).

于 2013-04-02T19:26:53.940 に答える