<p>有几件事:</p>
<ol>
<li>尝试<a href="http://docs.python.org/library/functions.html#enumerate" rel="nofollow noreferrer">^{<cd1>}</a></li>
<li>不要使用<code>darr</code>作为<code>list</code>,而是使用<code>dict</code>并将<code>dvp</code>值存储为键,<code>xindex</code>和<code>pindex</code>变量作为值</li>
</ol>
<p>这是密码</p>
<pre><code>for xindex, xvalue in enumerate(xarr):
darr = {}
for pindex, pvalue in enumerate(parr):
dvp = math.fabs(xvalue - pvalue)
darr[dvp] = {'xindex': xindex, 'pindex': pindex}
mini = min(darr.keys())
minix = darr[mini]['xindex']
minip = darr[mini]['pindex']
minindex = darr.keys().index(mini)
print "minimum_index> {0}, is the difference of xarr[{1}] and parr[{2}]".format(minindex, minix, minip)
darr.clear()
</code></pre>
<p><strong>说明</strong></p>
<p><code>enumerate</code>函数允许您迭代列表并接收项的索引。它是您的<code>range(100)</code>的替代品。注意,我没有在索引<code>xpre</code>,<code>ppre</code>处获取值的行,这是因为<code>enumerate</code>函数将索引和值都作为元组提供给我。在</p>
<p>然而,最重要的变化是,您的<code>darr</code>不是这样的列表:</p>
^{pr2}$
<p>它现在是这样一本词典:</p>
<pre><code>{
130: {'xindex': 1, 'pindex': 4},
18: {'xindex': 1, 'pindex': 6},
43: {'xindex': 1, 'pindex': 9},
...
}
</code></pre>
<p>现在,我不再仅仅存储<code>dvp</code>值,而是将索引存储到生成这些<code>dvp</code>值的<code>x</code>和{<cd16>}中。现在,如果我想知道什么,比如说,哪个<code>x</code>和{<cd16>}值产生了43的<code>dvp</code>值?我会这样做:</p>
<pre><code>xindex = darr[43]['xindex']
pindex = darr[43]['pindex']
x = xarr[xindex]
p = parr[pindex]
</code></pre>
<p>现在,<code>x</code>和{<cd16>}是有问题的值。在</p>
<p><strong>注意</strong>我个人会存储产生特定<code>dvp</code>的值,而不是这些值的索引。但你要的是指数,所以我给了你答案。我假设您有理由这样处理索引,但在Python中,当您以Python方式编程时,通常不会发现自己以这种方式处理索引。这是一种非常C的做事方式。在</p>