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

Rechnungen aus Liste

Beitragvon PalotheBear » Montag 9. März 2009, 15:59

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: 2405
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Montag 9. März 2009, 16:15

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

Beitragvon derdon » Montag 9. März 2009, 16:23

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

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]