Listedeki 2 elemanın ortalamasını yeni listeye bastırma

Arkadaşlar merhaba. Çok değişik bir soru yapısıyla karşılaştım ve size danışmak istedim.

liste = [0, 1, -1, -2, -2] şeklinde bir listem var ve benim yazacağım fonksiyon ile almak istediğim output aşağıdaki gibi.

Output : [None, 0.5, 0.0, -1.5, -2.0]

Elimdeki listeyi def hesapla(x) fonksiyonuna yolladığım zaman almak istediğim cevap bu outputta olduğu gibi.

Temel amaç liste elemanlarının her birinin önceki elemanla toplanıp ortalamasının yeni listeye yazılması. None değerinin nasıl alınacağını anlayamadım. Mesela:

0+none = none
1+0 / 2 = 0.5 --> 1.index
-1 + 1 / 2 = 0 --> 2.index
-2 + (-1) / 2 = -1.5 --> 3.index
-2 + (-2) / 2 = -2 --> 4.index

Herkese iyi forumlar şimdiden teşekkür ederim.

Merhaba.

Çıktının ilk elemanının None olması şart mı?

>>> (lambda l: [(l[i] + l[i+1])/2 for i in range(len(l)-1)])([0, 1, -1, -2, -2])
[0.5, 0.0, -1.5, -2.0]
1 Beğeni

Anladigim kadariyla ilk elemanin degeri herzaman None olacak, bu durumda asagidaki fonksyion isinize yarayacaktir:

def hesapla(x):
    liste = [(x[i] + x[i-1])/2 if i != 0 else None for i in range(len(x))]
    return liste

Eger yanlis anladiysam soyleyin dogrusunu yapmaya calisirim.

1 Beğeni

Çok sağolun hocam bu şekilde çalıştı.