2013-10-31 93 views
0

我得到了以下問題: 我正在爲python編寫Ensight腳本(用於可視化CFD計算的程序)。 程序的EnSight給了我一個列表的時間值,如:python列表中的項目索引

print ensight.query(ensight.TIMEVALS)['timevalues'] 
[[0, 0.0], [1, 9.99e-07], [2, 1.99e-06], [3, 0.0003],etc.] 

凡在每個列表中的第一個值是時間步長,第二個值在這個時間步長的實際時間。現在我想問一下timetep'2',並想知道列表的相應第二個值。因此,如果我能找到時間步的索引,我可以很容易地得到相應的時間值。

編輯\\ 現在解決了這個問題是這樣的:

time_values = ensight.query(ensight.TIMEVALS)['timevalues'] 
for start,sublist in enumerate(time_values): 
    if step_start in sublist: 
     index_begin = start 
for end,sublist in enumerate(time_values): 
    if step_stop in sublist: 
     index_end = end 

回答

1

也許這是你想要的嗎?

print ensight.query(ensight.TIMEVALS)['timevalues'][1][1] 

應打印該9.99e-07,因爲它是包含在你的主列表中的第二列表中的第二個值。

我只是想知道爲什麼你有3個開放,只有2個右括號。這是一個錯字嗎?

[[[..] ..]

如果有像myList中=列表[[0,0.0],[1,9.99e-07],[2,1.99e您可以通過myList [0]訪問第一個嵌套列表,結果爲[0,0.0] 要訪問該列表中的第二個值,您可以使用myList [0] [0,0] [0,0,0],[3,0.0003]等[ ] 1]

+0

是的,對不起,這是一個錯字!這不是我想要的,因爲我正在生成一個GUI,可以從哪個時間步進入哪個時間步想要評估某些變量。而且我想在加載的CFD格式文件不以timestep = 0開始的情況下防止錯誤 –

1

N設置爲所要求的時間步長值

>>> n=2 
>>> print [list[1] for list in ensight.query(ensight.TIMEVALS)['timevalues'] if list[0]=n ] 

這也可以在你的情況下延長

>>> from=2 
>>> to=100 
>>> print [list[1] for list in ensight.query(ensight.TIMEVALS)['timevalues'] if (list[0]>from && list[0]<to) ] 
1
>>> l = ensight.query(ensight.TIMEVALS)['timevalues'] 

>>> print l 
[[0, 0.0], [1, 9.99e-07], [2, 1.99e-06], [3, 0.0003]] 

>>> _d = {int(ele[0]): ele[1] for ele in l} 

>>> print _d[2] 
1.99e-o6