|
|
1
21
如果计算已经很好地绑定到函数中,那么使用
你可以使用
|
|
|
2
22
经过一分钟的思考,我想出了自己的答案。它可以通过嵌套的理解来实现:
我想这是可行的,尽管我发现嵌套的理解只有一点点可读性。 |
|
|
3
7
最明显的(我认为是最易读的)答案是不要使用列表理解或生成器表达式,而是使用真正的生成器:
它需要更多的水平空间,但一眼就能看清楚它在做什么要容易得多,最终你不会重复你自己。 |
|
|
4
6
map()将返回传递给昂贵()的mylist中每个对象的值列表。然后您可以列出理解这一点的列表,并丢弃不必要的值。 这有点像嵌套的理解,但应该更快(因为Python解释器可以相当容易地优化它)。 |
|
|
5
5
这正是发电机适合处理的问题:
囊性纤维变性: 'Generator Tricks for System Programmers' by David Beazley |
|
|
6
2
你可以一直
memoize
这个
Here's just one of many implementations of memoize as a decorator . |
|
|
7
2
你可以回忆昂贵的(x)(如果你经常打电话给昂贵的(x),你可能应该以任何方式回忆它。此页提供了针对python的memoize的实现: http://code.activestate.com/recipes/52201/ 这有一个额外的好处,即运行昂贵的(x) 较少的 超过n次,因为任何重复条目都将使用上一次执行的备忘录。 请注意,这假定昂贵的(x)是一个真正的函数,并且不依赖可能更改的外部状态。如果昂贵的(x)确实依赖于外部状态,并且您可以检测该状态何时更改,或者您知道它 习惯于 在列表理解过程中更改,然后可以在理解之前重置备忘录。 |
|
|
8
1
我将优先考虑:
这样做的好处是:
|
|
|
9
0
有一个简单的旧用法
|