擅长:python、mysql、java
<p>在Ruby工作了6年之后,我刚刚花了几个月的时间学习Python。这两种语言实在没有什么可比性,所以我决定自己编一本。现在,它主要关注函数式编程,但是既然你提到了Ruby的<code>inject</code>方法,我猜我们的波长是一样的。</p>
<p>我希望这有帮助:<a href="http://allthingsprogress.com/posts/the-ugliness-of-python"><strong>The 'ugliness' of Python</strong></a></p>
<p>几点可以让你朝着正确的方向前进:</p>
<ul>
<li><p>在Ruby中使用的所有函数式编程优点都是在Python中使用的,而且更加简单。例如,可以完全按照预期映射函数:</p>
<pre><code>def f(x):
return x + 1
map(f, [1, 2, 3]) # => [2, 3, 4]
</code></pre></li>
<li><p>Python没有类似于<code>each</code>的方法。由于只对副作用使用<code>each</code>,因此Python中的等效项是for循环:</p>
<pre><code>for n in [1, 2, 3]:
print n
</code></pre></li>
<li><p>当a)必须一起处理函数和对象集合时,列表理解非常好;b)需要使用多个索引进行迭代时,列表理解非常好。例如,要查找字符串中的所有回文(假设您有一个函数<code>p()</code>,该函数返回回文的true),只需要一个列表理解:</p>
<pre><code>s = 'string-with-palindromes-like-abbalabba'
l = len(s)
[s[x:y] for x in range(l) for y in range(x,l+1) if p(s[x:y])]
</code></pre></li>
</ul>