擅长:python、mysql、java
<p>随着列表理解变得越来越复杂,它们也开始变得很难阅读。在这种情况下,最好将它们的内部结构转换为生成器函数,并给它们一个(希望)有意义的名称。在</p>
<pre><code># First example
def getNearbyPoints(x, radius, points):
"""Yields points where 'delta(x, point) <= radius'"""
for p in points:
distance = delta(p, x)
if distance <= radius:
yield p, distance
nearbyPoints = list(getNearbyPoints(x, radius, allPoints))
# Second example
def xfg(data, p, q):
"""Yield 3-tuples of x, f(x), g(f(x))"""
for x in data:
f = f(x)
if f < p:
g = g(f)
if g < q:
yield x, f, g
newList = list(xfg(bigList, p, q))
</code></pre>