回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我已经开始研究一些Project Euler问题,并用一个简单的暴力解决方案解决了<a href="http://projecteuler.net/index.php?section=problems&id=4" rel="nofollow noreferrer">number 4</a>:</p>
<pre><code>def mprods(a,b):
c = range(a,b)
f = []
for d in c:
for e in c:
f.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(d*e)
return f
max([z for z in mprods(100,1000) if str(z)==(''.join([str(z)[-i] for i in range(1,len(str(z))+1)]))])
</code></pre>
<p>解决后,我试图使它尽可能紧凑,并提出了可怕的底线!在</p>
<p>不想半途而废,我试图将<code>mprods</code>函数压缩成一个列表理解。到目前为止,我提出了以下几点尝试:</p>
<ul>
<li><code>[d*e for d,e in (range(a,b), range(a,b))]</code><br/>
显然完全走错了方向。:-)</li>
<li><code>[d*e for x in [e for e in range(1,5)] for d in range(1,5)]</code><br/>
这给了我<code>[4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16]</code>,我所期望的
<code>[1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16]</code>或类似的。在</li>
</ul>
<p>有什么Python爱好者能帮上忙吗?:)</p>