Seite 1 von 1

Listen in Python

Verfasst: Montag 3. Februar 2014, 12:53
von fosler
Hey liebe Community,
ich brauche eure Hilfe dringend, da ich bei folgender Aufgabe nicht weiterkomme.

Ziel ist die Listen, die mit Listenwerten (2,3) beginnen erstmal auszuwählen und danach
soll das arithmetische Mittel des dritten Wertes jeweils gebildet werden.
Beim letzten Listenwert sollen nur die Zahlen addiert werden.
Im folgenden Beispiel würden erstmal die Listen [2,3,1,4], [2,3,3,3], [2,3,4,6] ausgewählt werden.
Das arithmetische Mittel ergibt sich aus (1+3+4)/3. = 8/3
Zum Schluss noch die Addition der Zahlen: 4+3+6 = 13
Mein erstellter Source Code lautet :

Code: Alles auswählen

a = []
c = []
kanten = [[2,3,1,4],[2,4,3,3],[3,5,3,4],[1,4,5,2],[2,3,3,3],[3,5,1,2],[2,3,4,6]]
d = [[k,l] for k in range(1,9) for l in range(1,9) if k !=l]
# alle theoretisch moeglichen Kanten von den Knoten 1 bis 8
for i in kanten:
    a.append(i[0:2])
print a
g = 0
for z in d:
    if z in a:
        g += 1
       
       
#print g

Es wäre super, wenn Ihr mir weiterhelfen könntet.
Vielen Dank
Viele Grüße
fosler

Re: Listen in Python

Verfasst: Montag 3. Februar 2014, 13:05
von /me
Du könntest erst einmal die gewünschten Daten filtern um nur darauf zu operieren. Danach wird es simpel.

Code: Alles auswählen

edges = [[2, 3, 1, 4], [2, 4, 3, 3], [3, 5, 3, 4], [1, 4, 5, 2], [2, 3, 3, 3],
         [3, 5, 1, 2], [2, 3, 4, 6]]


def get_filtered_edges(data, compare_value):
    return [element for element in data if element[:2] == compare_value]

edges_selected = get_filtered_edges(edges, [2, 3])

total = sum(element[2] for element in edges_selected)
print('{} / {} = {}'.format(total, len(edges_selected), total / len(edges_selected)))
Ergänzung: Wenn man mit Python 2 arbeitet findet eine reine Integer-Division statt. In dem Fall sollte man für total ein Typecast auf float durchführen. Alternativ hilft auch ein "from __future__ import division" am Anfang des Moduls, allerdings muss man sich klar machen, dass damit dann alle Integer-Divisionen im Modul betroffen sind.

Re: Listen in Python

Verfasst: Montag 3. Februar 2014, 13:11
von snafu

Code: Alles auswählen

In [6]: kanten = [[2,3,1,4],[2,4,3,3],[3,5,3,4],[1,4,5,2],[2,3,3,3],[3,5,1,2],[2,3,4,6]]

In [7]: auswahl = [k for k in kanten if k[0] == 2 and k[1] == 3]

In [8]: auswahl
Out[8]: [[2, 3, 1, 4], [2, 3, 3, 3], [2, 3, 4, 6]]

In [9]: sum(a[2] for a in auswahl) / float(len(auswahl))
Out[9]: 2.6666666666666665

In [10]: 8 / 3.
Out[10]: 2.6666666666666665

In [11]: sum(a[3] for a in auswahl)
Out[11]: 13
Die "In"- und "Out"-Dinger sind Ausgaben der Shell. Die gehören nicht zum Code.

Re: Listen in Python

Verfasst: Montag 3. Februar 2014, 15:09
von fosler
Vielen Dank euch!!! :D