例如,如果我想从l = [1,2,3,4,5]
赋值a, b, c
,我可以这样做
a, b, c = l[:3]
但是如果l
仅仅是[1,2]
(或者[1]
或者[]
)呢?
有没有办法自动将其余变量设置为None
、''
、0
或其他默认值?
我想过在赋值之前用默认值扩展列表,以匹配变量的数量,但我只是想知道是否有更好的方法。
发布于 2019-06-21 03:04:22
通常,要将N个元素从大小为M的列表中解压到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
https://stackoverflow.com/questions/56692191
复制相似问题