擅长:python、mysql、java
<p>你可以试着用列表来理解。你知道吗</p>
<pre><code> x = list(map(lambda v: R * (v * n) / s, range(n)))
x.extend(map(lambda v: R * (-v * n) / s, range(n)))
x = list(filter(lambda v: v < 100, x))
x_sorted = sorted(x)
</code></pre>
<p>我在这里所做的是使用<code>extend</code>方法,它的工作方式与使用<code>__add__</code>操作符类似,只是extend不创建新的列表,而是向当前列表添加值,这意味着它要快一些。而且,列表理解往往比Python中的for循环快,而且在引导时更容易阅读。你知道吗</p>
<p>因此,如果使用<code>R = 6371.11</code>、<code>s = 100000</code>和<code>n = 18</code>运行,您应该得到:</p>
<pre><code>[-19.4955966, -18.3487968, -17.201997, -16.0551972, -14.9083974, -13.7615976, -12.6147978,
-11.467998, -10.3211982, -9.1743984, -8.0275986, -6.8807988, -5.733999, -4.5871992,
-3.4403994, -2.2935996, -1.1467998, 0.0, 0.0, 1.1467998, 2.2935996, 3.4403994, 4.5871992,
5.733999, 6.8807988, 8.0275986, 9.1743984, 10.3211982, 11.467998, 12.6147978, 13.7615976,
14.9083974, 16.0551972, 17.201997, 18.3487968, 19.4955966]
</code></pre>