擅长:python、mysql、java
<p>这里有一个解决方案:</p>
<pre><code>def lenumerate(s, flip=False):
a = text.split()
b = map(len, a)
c = zip(a, b) if not flip else zip(b, a)
return list(c)
text = "But then of course African swallows are nonmigratory"
l = lenumerate(text, True)
print(l)
# [(3, 'But'), (4, 'then'), (2, 'of'), (6, 'course'), (7, 'African'), (8, 'swallows'), (3, 'are'), (12, 'nonmigratory')]
</code></pre>
<p><strong>解释</strong></p>
<ul>
<li>只需应用<code>split()</code>一次</李>
<li>您可以将<code>map</code>直接输入<code>zip</code>。这意味着更多的工作是懒散地完成的,而不是建立不必要的列表</李>
<li>Python支持一行<code>if</code>/<code>else</code>构造的惰性三元语句</李>
<li>没有参数的<code>print</code>语句没有用处,可以删除</李>
</ul>