Rechnungen aus Liste

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
PalotheBear
User
Beiträge: 9
Registriert: Sonntag 15. Februar 2009, 17:48

Hallo!

möchte gern aus einer Liste z.B [0,1,2,3] alle Möglichen Rechnungen erstellen! z.b: 0+0=0, 0+1=1 usw..... gibt es hier eine einfache Funktion dafür?

Danke!
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Code: Alles auswählen

In [1]: from itertools import combinations

In [2]: from operator import add

In [3]: map(lambda x: add(*x), combinations(range(4), 2))
Out[3]: [1, 2, 3, 3, 4, 5]
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Code: Alles auswählen

In [84]: from operator import mul, div, sub, add

In [85]: for numbers in combinations(xrange(4), 2):
    for operator in (mul, add, sub):
        print '%s%r = %d' % (operator.__name__, numbers, operator(*numbers))
   ....:         
   ....:         
mul(0, 1) = 0
add(0, 1) = 1
sub(0, 1) = -1
mul(0, 2) = 0
add(0, 2) = 2
sub(0, 2) = -2
mul(0, 3) = 0
add(0, 3) = 3
sub(0, 3) = -3
mul(1, 2) = 2
add(1, 2) = 3
sub(1, 2) = -1
mul(1, 3) = 3
add(1, 3) = 4
sub(1, 3) = -2
mul(2, 3) = 6
add(2, 3) = 5
sub(2, 3) = -1
Edit: und hier mit besserer Ausgabe:

Code: Alles auswählen

In [145]: from operator import mul, div, sub, add

In [146]: from itertools import izip

In [147]: for first_num, second_num in combinations(xrange(4), 2):
    for sign, operator in izip(('*', '+', '-'), (mul, add, sub)):
        print '%d %s %d = %d' % (first_num, sign, second_num, operator(first_num, second_num))
   .....:         
   .....:         
0 * 1 = 0
0 + 1 = 1
0 - 1 = -1
0 * 2 = 0
0 + 2 = 2
0 - 2 = -2
0 * 3 = 0
0 + 3 = 3
0 - 3 = -3
1 * 2 = 2
1 + 2 = 3
1 - 2 = -1
1 * 3 = 3
1 + 3 = 4
1 - 3 = -2
2 * 3 = 6
2 + 3 = 5
2 - 3 = -1
Antworten