擅长:python、mysql、java
<p>如果您想要一个itertools答案:</p>
<pre><code>from itertools import islice
my_list = ["abra", "cada", "bra", "hum", "dee", "dum"]
it = iter(my_list)
for sli in iter(lambda:list(islice(it, 3)), []):
print("".join(sli))
</code></pre>
<p>或者使用zip和iter:</p>
<pre><code>my_list = ["abra", "cada", "bra", "hum", "dee", "dum"]
it = iter(my_list)
for sli in zip(it,it,it):
print("".join(sli))
</code></pre>
<p>如果要对每个匹配项进行编号并设置格式:</p>
<pre><code>n = 3
it = iter(my_list)
rn = map(str, range(1, n+1))
for sli in zip(it, it, it):
print(" ".join(["{}: {}".format(a,b) for a,b in zip(rn, sli)]))
</code></pre>
<p>输出:</p>
<pre><code>1: abra 2: cada 3: bra
1: hum 2: dee 3: dum
</code></pre>
<p>要对任意数量的元素进行分组,可以使用itertools提供的grouper配方:</p>
<pre><code>from itertools import izip_longest
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
for grp in (grouper(my_list,3)):
print("".join(grp))
</code></pre>