首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当可能没有足够的值可以解包时,干净地将列表值分配给多个变量

当可能没有足够的值可以解包时,干净地将列表值分配给多个变量
EN

Stack Overflow用户
提问于 2019-06-21 02:50:32
回答 1查看 58关注 0票数 1

例如,如果我想从l = [1,2,3,4,5]赋值a, b, c,我可以这样做

a, b, c = l[:3]

但是如果l仅仅是[1,2] (或者[1]或者[])呢?

有没有办法自动将其余变量设置为None''0或其他默认值?

我想过在赋值之前用默认值扩展列表,以匹配变量的数量,但我只是想知道是否有更好的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56692191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档