Gå til innhold

Python: finne "median" paa en list


Gjest Slettet-8fx0y6VV

Anbefalte innlegg

Videoannonse
Annonse

Hvis antall elementer er et partall, så er vel medianen definert som snittet av de to elementene i midten?

 

Husk forresten å sortere listen din før du prøver å finne medianen, ser ikke at du nevner sortering i eksempelet (listen er riktignok allerede sortert, men vet du at det alltid er tilfelle?).

Endret av Frank2004
Gjest Slettet-8fx0y6VV

joda, jeg vet at jeg maa sortere listen, og det var grunnen til at jeg skrev [1,2,3] og ikke [2,1,3] :p

 

Medianen ja, det var det paa norsk ;) jeg kunne ikke komme paa hva det var i gaar kveld :p

 

Jeg har en liten ide, men er ikke sikker paa om den vill virke. Skal poste resultatet av testen senere i dag naar jeg kommer hjem.

 

Espen

Hei

 

list =  [1,2,3,4]

jeg prover aa finne median (paa englelsk, kommer ikke paa hva er paa norsk).

Jeg har list[(len(list))/2], men den virker bare paa lister med et odd nummer av elementer i dem.

Noen som vet om en funksjon eller en hack som kan hjelpe meg?

 

Espen

def find_median(numberList):
   copyNumberList = numberList[:]
   copyNumberList.sort()
   length = len(numberList)

   if length % 2 != 0:  # oddetall
       return numberList[(length - 1) / 2]

   else:
       a = numberList[(length - 1) / 2]
       b = 1 + numberList[(length - 1) / 2]
       return (a + b) / 2.0 # flyttall




partall = [1,2,3,4,5,6]
oddetall = [1,2,3,4,5,6,7,8,9]

print find_median(partall)
>>> 3.5
print find_median(oddetall)
>>> 5

 

tror denne gjør jobben.

 

Jeg kikket litt rundt. Det er faktisk mulig å lage en mer effektiv algoritme der sorteringskravet elimineres. Skal du finne medianen på noen mill samples støtt og satdig, så er det jo verdt moroa ;-)

 

http://en.wikibooks.org/wiki/Computer_Scie...r_4#find-median

Endret av zeitgeist

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...