<p>你的代码没有什么问题。你知道吗</p>
<ol>
<li>处理错误消息中描述的脚本时出错。您正在使用索引遍历列表。此列表的元素有不同的类型(至少是<code>str</code>和<code>float</code>)。如果您的目标是划分两个元素,则需要将这两个元素都转换为<code>float</code>。你知道吗</li>
<li><p>你没有正确使用<a href="https://docs.python.org/3/library/functions.html#func-range" rel="nofollow noreferrer">^{<cd4>}</a>。首先,<code>range(0, len(diff2_list))</code>等价于<code>range(len(diff2_list))</code>。但如果我们查看循环中的代码,就会发现下一个条件:<code>if k==0 or k==(len(diff2_list)-1):</code>。添加此选项是为了避免在访问列表外的索引时出错。但您可以通过确定不包括列表的第一个和最后一个元素的索引的范围来防止它。你知道吗</p>
<pre><code>for k in range(1, len(diff2_list) - 1):
</code></pre></li>
<li>错误处理。据我所知,您使用的列表包含不同类型的值。我不能确定这种特殊情况,但一般来说,有必要添加<a href="https://docs.python.org/3/tutorial/errors.html#handling-exceptions" rel="nofollow noreferrer"><em>exception handler</em></a>,以防止错误发生时循环中断。你知道吗</li>
</ol>
<p>因此,应用所有这些提示,您的代码将如下所示:</p>
<pre><code>diff2_list = [1, 1.1, "1.2", "1.3"]
spkd_c2_list =[]
for k in range(1, len(diff2_list) - 1):
xt_d2 = diff2_list[k] # if you need it, cause in current code you don't use it
try:
spkd_c2_list.append(float(diff2_list[k - 1]) / float(diff2_list[k + 1]))
except:
spkd_c2_list.append("NAN")
</code></pre>