Sie ctypes verwenden können, und verfügen über ein Doppel-Array (oder Array-float) genau so, wie Sie‘ d haben in C, anstatt Ihre Daten in einer Liste zu halten. Dies ist ein faires niedriges Niveau, aber es ist eine Empfehlung, wenn Sie eine gute Leistung benötigen und wenn Ihre Liste eine feste Größe hat.
Sie können das Äquivalent eines C erstellen double array[100];
in Python, indem Sie:
array = (ctypes.c_double * 100)()
Der ctypes.c_double * 100
Ausdruck ergibt lange eine Python-Klasse für eine Reihe von Doppelzimmer, 100 Einzelteile. Um es zu einer Datei zu verbinden, können Sie einfach buffer
verwenden, um seinen Inhalt zu erhalten:
>>> f = open("bla.dat", "wb")
>>> f.write(buffer(array))
Wenn Ihre Daten bereits in einer Python-Liste sind, es in ein Doppel Array Verpackung kann oder nicht sein können schneller als Aufruf struct
als in AGF akzeptierte Antwort - ich Mess verlassen wird, die schneller als Hausaufgaben, aber der gesamte Code Sie benötigen, ist dieses:
>>> import ctypes
>>> array = (ctypes.c_double * len(floatlist))(*floatlist)
Um es als String zu sehen, tun gerade: str(buffer(array))
- die man hier den Nachteil, dass Sie ist muss auf Float-Größe (float vs. double) und CPU-abhängigen Float-Typ achten - das struct-Modul kann sich darum kümmern. Der große Gewinn ist, dass man mit einem Float-Array die Elemente immer noch als Zahlen verwenden kann, indem man dann genauso wie bei einer einfachen Python-Liste darauf zugreift, während man dann als Planare Speicherregion mit buffer
zur Verfügung steht.
'' f'' bekommt Sie ein C * f * loat (32 Bit); Sie wollen zweifellos einen Python float alias C * d * ouble (64 bit), also sollten Sie und Ihre Follower '' '' '' ' –
verwenden. Sie haben Recht, ich war unvorsichtig mit meinen Datentypen. Aber ich wollte tatsächlich einzelne Präzisionswagen. – MxyL