簡體   English   中英

for循環崩潰python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM