有没有办法解压成不同的类型?是这样的:# data = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
(parts, *words) = datadata提供。我从不分配这个值。我添加作为例子。 parts必须是一个 int,列表的所有其余部分都被分配为字符串列表。我发现的唯一方法是将变量重新分配parts为下一个:(parts, *words) = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
parts = int(parts)但我不喜欢连续两次重复赋值变量。由于 python 是一种保持简洁的语言,因此我正在寻找解决方案。*编辑:让我知道连续两次重新分配是否有效。
2 回答

BIG阳
TA贡献1859条经验 获得超6个赞
在 Python 的静态类型注释中,list
s(以及除tuple
s 之外的所有序列)被假定为同类类型(它可能仍然是多种类型的联合,但它不是不同的单一类型,具体取决于您正在查看的索引) . 您通过让索引具有一种类型而其他索引具有不同类型来list
违反该假设。0
尽管 Python 通常不会强制执行 的“预期”用法list
,但类型检查器会执行,并且没有任何机制可以解决手动强制转换或类型转换的问题,就像您在此处所做的那样。
简短回答:你在“滥用” list
s,typing
当你这样做时不会帮助你。因此,要么忽略/禁用此代码的类型检查器(毕竟它会工作得很好),要么忍受毫无意义的转换。

慕森王
TA贡献1777条经验 获得超3个赞
这个怎么样?它测试每个项目的类型,并根据需要将其放入适当的列表中。
data = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
parts = []
words = []
[parts.append(item) if type(item) == int else words.append(item) for item in data]
添加回答
举报
0/150
提交
取消