<p>这个版本很容易重复,并在左侧为所有变量提供值,以防您决定以后使用它们(不仅仅是<code>a</code>)。请注意,它也不会修改原始列表,以便以后可以根据需要使用。你知道吗</p>
<pre><code>def pad(iterable, length=0, padding=None):
li = list(iterable) # Generate new list from `iterable`.
li.extend([padding] * (length - len(li))) # Negative value generates empty list...
return li
sentence = 'munching mcdonalds'
a, b, c = pad(sentence.split(), 3)
assert (a, b, c) == ('munching', 'mcdonalds', None)
a, b, c, d = pad(range(3), 4)
assert (a, b, c, d) == (0, 1, 2, None)
a = pad(range(4), 3)
assert a == [0, 1, 2, 3]
</code></pre>
<h2>更新的答案</h2>
<p>我在写了我的第一篇文章后就想到了这一点,然后我的作者也指出了这一点
在评论中指出,将此作为列表生成可能是危险的。如果…怎么办
我们想把它填充到,比如说,1E30个元素左右?这是函数作为
发电机。你知道吗</p>
<pre><code>def pad(iterable, length=0, padding=None):
for element in iterable:
yield element
for _ in range(length - len(iterable)):
yield padding
sentence = 'munching mcdonalds'
a, b, c = pad(sentence.split(), 3)
assert (a, b, c) == ('munching', 'mcdonalds', None)
a, b, c, d = pad(range(3), 4)
assert (a, b, c, d) == (0, 1, 2, None)
a = list(pad(range(4), 3))
assert a == [0, 1, 2, 3]
</code></pre>
<p>谢谢你,麦考特!你知道吗</p>