例如,如果我想从 l = [1,2,3,4,5] 分配 a, b, c,我可以这样做
a, b, c = l[:3]
但如果 l 只是 [1,2](或 [1] 或 [] )?
有没有办法自动将其余变量设置为 None 或 '' 或 0 或其他一些默认值?
我考虑过在分配之前使用默认值扩展列表以匹配变量的数量,但只是想知道是否有更好的方法。
请您参考如下方法:
通常,要将大小为 M 的列表中的 N 个元素解压缩为 N 个单独的变量,其中 M <= N,然后您可以将列表切片填充到 N 并再次切片:
l = [1,]
a, b, c = (l[:3] + [None]*3)[:3]
a, b, c
# 1, None, None
如果您喜欢一种干净的基于生成器的方法,这也行得通:
from itertools import islice, cycle, chain
def pad(seq, filler=None):
yield from chain(seq, cycle([filler]))
a, b, c = islice(pad([1, ]), 3)
a, b, c
# 1, None, None
