Seite 1 von 1

Rechnungen aus Liste

Verfasst: Montag 9. März 2009, 15:59
von PalotheBear
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!

Verfasst: Montag 9. März 2009, 16:15
von DasIch

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]

Verfasst: Montag 9. März 2009, 16:23
von derdon

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