Frage zu Listenalgorithmus

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Montag 26. Juni 2006, 14:55

Hallo Leute,

Irgendwie bekomm ich gerade einen einfach scheinenden Listenalgorithmus nicht so recht hin :(

Code: Alles auswählen

list=[1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4]
Wie kann ich am Einfachsten die Summen der jeweils gleichen Einträge in eine neue Liste schreiben?



Danke für eure Unterstützung.

LG
Johannes
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Montag 26. Juni 2006, 15:31

Hallo!

Irgendwie bin ich doch noch selber draufgekommen:

Code: Alles auswählen

a=0

list=[1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4]

for i in range(len(list)):
	if list[i]!=list[i-1]:
		if (a != i):
			print "Summe: " + str(sum(list[a:i]))
			a=i

print "Summe: "+str(sum(list[a:len(list)]))
LG
Johannes
Frank
User
Beiträge: 6
Registriert: Freitag 23. Juni 2006, 11:45

Montag 26. Juni 2006, 15:35

Code: Alles auswählen

#!/usr/bin/env python
 
 my_list=[1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4]
 min = 1
 max = 4
 solv_list = []
 
 for i in range(max):
     tempsum = 0
     for j in range(len(my_list)):
         if my_list[j] == min:
             tempsum = (tempsum+1)
     solv_list.append(tempsum)
     min = (min + 1)
 
 for k in solv_list:
     print k
Soweit der Senf eines Python-Noobs. :)


Gruß, Frank
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 26. Juni 2006, 15:58

Hier ist noch einer ;-)

Code: Alles auswählen

my_list = [1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4]
# list ist ein Schlüsselwort. Bitte nicht überschreiben.

for item in frozenset(my_list):
    print "Summe %s: %4s" % (item, my_list.count(item) * item)
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Montag 26. Juni 2006, 22:27

Und noch'n Versuch.

Code: Alles auswählen

In [3]: a = [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4]

In [4]: from itertools import groupby

In [5]: [sum(items) for key, items in groupby(a)]
Out[5]: [3, 8, 15, 16]
Antworten