Aber es gibt "List Comprehension" (LC). Die äussere ``for``-Schleife kann man auch noch durch eine ersetzen:Spacekiss hat geschrieben:Also Blackjacks Lösung ist ärger mich garde das ich ent selber auf die Idee gekommen bin, naja bin eher Haskell gewöhnt, da sind for Schleifen unbekannt ^^
Code: Alles auswählen
def bool_tab(variable_count):
return ([bool(i & 2**bit) for bit in xrange(variable_count)]
for i in xrange(2**variable_count))
print list(bool_tab(3))
In Haskell würde das so aussehen:
Code: Alles auswählen
import Bits
boolTab :: Int -> [[Bool]]
boolTab vars = [int2bools n vars | n <- [0 .. bit vars - 1]]
-- Python: [int2bools(n, vars) for n in xrange(vars)]
int2bools :: Int -> Int -> [Bool]
int2bools n bits = [testBit n i|i <- [0 .. bits - 1]]
@Leonidas: In Haskell gibt es keine "Anweisungen". Nur Funktionen. Und davon kann man nur in Ausnahmefällen mehrere nacheinander ausführen lassen, weil es streng genommen bei der Auswertung kein vorher/nachher gibt, weil keine Auswertereihenfolge vorgeschrieben ist. Das muss man natürlich für Ein-/Ausgabe Operationen machen können weil die "reale Welt" eben doch irgendwie sequentiell arbeitet.
``if`` habe ich in Haskell übrigens noch nie benutzt.