擅长:python、mysql、java
<p>通过显式地迭代四个组而不是逐个元素,可以使代码变得更好一些。有几种方法可以做到这一点。最简单的方法是将索引增加四:</p>
<pre><code>card_sequence = ...
for index in range(0, len(cardSequence), 4):
four_card = card_sequence[index:index + 4]
# process four_card
</code></pre>
<p>这样做的好处是在<code>index == 0</code>时,不会像您的代码那样在空的<code>four_card</code>上调用处理代码。另外,我建议坚持一种命名约定(下划线vs CamelCase)。我选择前者,因为这是普遍推荐的Python约定。在</p>
<p>您可以使用<a href="https://docs.python.org/3/library/itertools.html#itertools-recipes" rel="nofollow noreferrer">^{<cd4>} documentation</a>提供的<code>grouper</code>配方做一个稍微复杂一点的版本。这种方法的优点是,它的规模可能会更好:</p>
<blockquote>
<pre><code>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 zip_longest(*args, fillvalue=fillvalue)
</code></pre>
</blockquote>
^{pr2}$
<p>请记住,如果您的输入序列没有四个元素的倍数,<code>grouper</code>的这个实现将用<code>None</code>填充最后一组中的额外元素。它还假设您在每次迭代中使用组的所有元素(在本例中是这样做的)。有关其他实现,请参见<a href="https://stackoverflow.com/a/23926929/2988730">this wonderful answer</a>。在</p>