[英]for-loop crashes python
我有一個C庫,我用ctypes包裝在Python中,下面有這個DLL,可以在我要求時打印出時間值。 但是,與其遍歷每個項目並手動要求它打印出50000個時間值,不如將其打印出來。 我認為我創建了一個for循環,但無法正常工作。
這是我的代碼的一個小例子:
import ctypes
from ctypes import *
MultiF = (b'path_to_file')
dll = CDLL('path_to_dll')
PN = ctypes.c_char_p(b'Paramter_name')
startTime = ctypes.c_double(-value)
stopTime = ctypes.c_double(value)
DT_RETURN = 0x0100
DT_FLOAT = 0x0001
convertType = (DT_RETURN|DT_FLOAT)
Null = 0
dll.readSParm.argtypes = (POINTER(SFile), c_char_p, c_double, c_double, c_double, POINTER(TTag), c_ushort,)
dll.readSParm.restype = POINTER(SParm)
g = dll.readSParm(f, PN, startTime, stopTime, Null, None, convertType)
print(g[0].time[0])
print(g[0].time[1])
print(g[0].time[50000])
這些是代碼給我的返回值:
-1031.0762939453125
-1031.0362548828125
0.0
我最終希望將所有這些數字放入要繪制圖形的數組中。 所以我創建了一個失敗的for循環:
time = (g[0].time)
for i in time:
print(time[1])
這只會一遍又一遍地打印第一個值,直到Python崩潰為止。 我的問題是:如何使其循環運行並打印出所有50000個值?
這有效:
time = (g[0].time)
for i in time:
print(i)
但隨后崩潰了Python
您正在打印時間[1],而不是時間[i]。 同樣,現在i是時間上每個元素的值本身。
如果要遍歷列表的所有索引並為每個索引打印值(我假設您要這樣做),則需要執行
for i in range(len(time))
這會將您的代碼更改為
time = (g[0].time)
for i in range(len(time)):
print(time[i])
如果time
實際上是您要打印的值的列表,那么這應該可以解決問題:
for v in time:
print v
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.