0

我遇到了以下问题:我正在用 python 为 Ensight(一个用于可视化 CFD 计算的程序)编写脚本。Ensight 程序为我提供了一个时间值列表,例如:

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

其中每个列表中的第一个值是时间步长,第二个值是该时间步长的实际时间。现在我想以某种方式询问时间步长'2',并想知道列表中相应的第二个值。因此,如果我能找到时间步长的索引,我就可以轻松获得相应的时间值。

EDIT\\它现在像这样解决了它:

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
4

3 回答 3

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-06], [3, 0.0003],etc.] 这样的列表,你可以访问第一个嵌套列表myList[0] 导致 [0, 0.0] 要访问该列表中的第二个值,您可以使用 myList[0][1]

于 2013-10-31T07:06:10.340 回答
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)  ]
于 2013-10-31T07:13:22.013 回答
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
于 2013-10-31T07:13:39.510 回答