PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Python ctypes-Array befüllen


Dr.Doom
2012-07-05, 15:45:23
memrange = ctypes.c_int * 64

# Tut's nicht
#valuerangebuffer = memrange([10 for n in range(64)])
##for i in range(64):
## memrange.value[i] = 10
#valuerangebuffer = memrange(10**64)
#valuerangebuffer = memrange(10 for n in range(64))

# Tut's
valuerangebuffer = memrange(10,...64 10nen.., 10)

Huhu,

kennt jemand eine elegantere Lösung als hier für die memrange-Initialisierung in den klammern explizit die 64 Werte oder Variablen hinschreiben zu müssen?

Kann man irgendwie eine Liste nehmen, diese mit list[i]=x befüllen und die Liste dann für die Befüllung des memranges benutzen?
Einfach eine Liste in die Klammern setzen, tut's natürlich nicht ("Integer erwartet").

Nagelbrett
2012-07-05, 17:24:27
argument list unpacking!

valuerangebuffer = memrange(*[10]*64)

ungetestet :)

Dr.Doom
2012-07-06, 13:08:42
Danke, werd' ich auch mal ausprobieren, aber ich hatte da oben noch einen dummen Denkfehler.

So geht's nu mit einer Zeile mehr

memrange = ctypes.c_int * 64 # memrange ~ Typ/Klasse
buffer = memrange() # buffer ~ Objekt
buffer[:] = [10 for i in buffer] # buffer belegen