繁体   English   中英

在 python 中解压为 int 和 string

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM