[英]unpack to int and string in python
有没有办法解压到不同的类型? 情况就是这样:
# data = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
(parts, *words) = data
提供data
。 我从不分配这个值。 我作为例子添加。 parts
必须是 int,列表的所有 rest 都分配为字符串列表。
我发现的唯一方法是将变量parts
重新分配为下一个:
(parts, *words) = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
parts = int(parts)
但我不喜欢连续两次重复赋值变量。 由于 python 是一种保持清洁和简单的语言,我正在寻找一个解决方案。
*编辑:让我知道连续两次重新分配是否有效。
在 Python 的 static 键入注释中, list
s(以及除tuple
s 之外的所有序列)被假定为同质类型(它可能仍然是多种类型的联合,但它不是不同的单一类型,具体取决于您正在寻找的索引在)。 您的list
违反了该假设,因为索引0
具有一种类型,而其他索引具有不同的类型。 尽管 Python 通常不会强制执行list
的“预期”用法,但类型检查器会执行,并且没有机制可以解决手动转换或类型转换的问题,就像您在这里所做的那样。
简短的回答:你在“滥用” list
,当你这样做时, typing
对你没有帮助。 因此,要么忽略/禁用此代码的类型检查器(毕竟它会工作得很好),要么忍受毫无意义的演员阵容。
这个怎么样? 它测试每个项目的类型并根据需要将其放入适当的列表中。
data = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
parts = []
words = []
[parts.append(item) if type(item) == int else words.append(item) for item in data]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.