擅长:python、mysql、java
<p>上述例程(包括<code>break</code>命令):</p>
<pre><code>df1['TMA'] = 99
for i in range(0, len(df1)):
for j in range(0,6):
if Schiphol_TMA['geometry'][j].contains(df1['point'][i]):
df1['TMA'][i] = j+1
break
</code></pre>
<p>以上时间为86.8秒(在Google Colab上)</p>
<p>当我使用列表理解重写以下代码时:</p>
<pre><code>df1['point'] = gp.points_from_xy(df1['LON'],df1['LAT'])
def f(p):
for T in range(0, 6):
if Schiphol_TMA['geometry'][T].contains(p):
result = T+1
break
else:
result = 99 # not in any area
return result
df1['TMA'] = [f(pt) for pt in df1['point']]
</code></pre>
<p>这个新的程序花了45.9秒。大约一半。
我开始学习。。。
也许这可以做得更快</p>