首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将值解压缩为变量或无(ValueError:不足以解压)

将值解压缩为变量或无(ValueError:不足以解压)
EN

Stack Overflow用户
提问于 2019-12-12 11:09:07
回答 3查看 2.8K关注 0票数 9

如何将iterable解压缩为不匹配的变量数?

太多的价值观:

代码语言:javascript
运行
复制
>>> one,two = [1,2,3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

可以忽略

代码语言:javascript
运行
复制
>>> one,two,*_ = [1,2,3,4]  
>>> 

注意:"扩展可迭代解包装“只适用于Python3。关于下划线

数据太少/变量过多的相反情况是如何做到的:

代码语言:javascript
运行
复制
>>> one,two,three = [1,2]   
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
>>>

被处理,特别是使剩余的变量被赋值为None (或其他值)?

就像这样:

代码语言:javascript
运行
复制
>>> one,two,three = [1,2] or None
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
>>>

https://stackoverflow.com/a/8857846/1619432建议扩大列表:

代码语言:javascript
运行
复制
>>> one,two,three = [1,2] + [None]*(3-2)
>>> one   
1
>>> two
2
>>> three
>>>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-12 11:14:51

使用*操作符,用正在解压缩的内容填充中间可迭代的内容,并用选择的默认值填充剩余部分。

代码语言:javascript
运行
复制
x = [1, 2]
default_value= None
one, two, three = [*x, *([default_value] * (3 - len(x)))]

以及处理这两起案件的奖金职能:

代码语言:javascript
运行
复制
def unpack(source, target, default_value=None):
    n = len(source)
    if n < target:
        return [*source, *([default_value] * (target - len(source)))]
    elif n > target:
        return source[0:target]
    else:
        return source

根据需要修改以处理不可迭代的输入。

票数 5
EN

Stack Overflow用户

发布于 2019-12-12 11:15:04

可以使用以下方法将序列解压缩为三个变量:

代码语言:javascript
运行
复制
one, two, *three = [1,2]

此时,three将是一个空列表。然后,如果three为空,则可以使用or检查将or分配给or

代码语言:javascript
运行
复制
three = three or None
票数 14
EN

Stack Overflow用户

发布于 2019-12-12 11:16:59

这个对你有用吗?您可以根据需要使nones数组大小。

代码语言:javascript
运行
复制
nones = [None]*100 # or however many you think you might need
one, two, three, four, five, *_ = [1,2] + nones
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59303232

复制
相关文章

相似问题

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