擅长:python、mysql、java
<p>我的与你的相似,算法基本相同,但我认为这应该运行得稍微快一点:</p>
<pre><code>def fn(lst, n):
word_count = 0
res = []
temp_lst = []
for item in lst:
len_current_item = len(item.split())
word_count += len_current_item
if word_count < n:
temp_lst.append(item)
else:
res.append(temp_lst)
last_item = res[-1][-1]
temp_lst = [last_item, item]
word_count = len_current_item + len(last_item.split())
res.append(temp_lst)
# Checking for last item's lenght as Phydeaux pointed out in comments.
if word_count > n:
res.append([temp_lst.pop()])
return res
</code></pre>
<p>输出:</p>
<pre><code>['blended e learning forumin planning', 'difficulties of learning as forigen language', 'difficulties of grammar']
['difficulties of grammar', 'students difficulties in grammar', 'difficulties of english grammar']
</code></pre>
<p>我尽量避免复制和清除,以及一些小的改动</p>