list []
list contains [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
リストから10個の数字の平均を得るにはどうすればよいですか?リスト内の10個の数字の平均をどのようにすればよいですか
list []
list contains [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
リストから10個の数字の平均を得るにはどうすればよいですか?リスト内の10個の数字の平均をどのようにすればよいですか
以下はサンプルコードです。あなたのケースではstep
、すなわち10
の数字のリストを繰り返します。ステップの間の要素のaverage
を計算します。
>>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
>>> step = 10
>>> for i, _ in enumerate(my_list[::step]):
... sub_list = my_list[i*10:] if (i+1)*10 > len(my_list) else my_list[i*10:(i+1)*10] # Condition if the len(my_list) % step != 0
... print sum(sub_list)/float(len(sub_list)) # Dividing by float' to get decimal value as average (Not needed in Python 3)
...
5.5
15.5
25.5
平均がサブリストを作成せずに計算することができる。
testdata = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
LEN = 10
def avg(data):
datasum = cnt = 0
for num in data:
datasum += num
cnt += 1
if cnt == LEN:
yield datasum/LEN
datasum = cnt = 0
if cnt:
yield datasum/cnt
print(list(avg(testdata)))
# [5.5, 15.5, 25.5]
サブリストを有する代替実装:
def avg(data):
for i in range((len(data) + LEN - 1) // LEN):
sublist = data[i*LEN:(i+1)*LEN]
yield sum(sublist)/len(sublist)
注:INT/INTは、このあるのpython3コード浮く。 Python2ではint/intはintです。
あなたのコードが何をすべきか説明してください。入力と予想される出力は何ですか?あなたのコードで今起こっていることは、あなたがそれが動作していないと信じるように導きます。最終的に、より良い[mcve]をまとめて、それに応じて質問を編集する方法をお読みください。 – idjaw
「平均10個」とは「平均1〜10」を意味し、次に「11-20」などを指します。 –
10個の数字の組み合わせはすべて平均30億を生成します! – VPfB