在 python 中解压为 int 和 string

有没有办法解压成不同的类型?是这样的:

# data = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
(parts, *words) = data

data提供。我从不分配这个值。我添加作为例子。 parts必须是一个 int,列表的所有其余部分都被分配为字符串列表。

我发现的唯一方法是将变量重新分配parts为下一个:

(parts, *words) = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
parts = int(parts)

但我不喜欢连续两次重复赋值变量。由于 python 是一种保持简洁的语言,因此我正在寻找解决方案。

*编辑:让我知道连续两次重新分配是否有效。


守候你守候我
浏览 113回答 2
2回答

BIG阳

在 Python 的静态类型注释中,lists(以及除tuples 之外的所有序列)被假定为同类类型(它可能仍然是多种类型的联合,但它不是不同的单一类型,具体取决于您正在查看的索引) . 您通过让索引具有一种类型而其他索引具有不同类型来list违反该假设。0尽管 Python 通常不会强制执行 的“预期”用法list,但类型检查器会执行,并且没有任何机制可以解决手动强制转换或类型转换的问题,就像您在此处所做的那样。简短回答:你在“滥用” lists,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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python