python - 如何使用列表理解添加 str + int 列表?

标签 python

好的,首先,我是 python 的新手。 所以,我想要实现的是创建一个列表列表,其中第一个元素是字符串,第二个元素是整数。 首先,我输入了一些集合,然后将每个集合放在一个新行上,所以它看起来像这样:

3
Alex 40
Boris 30
Claire 50

这似乎有效

n = int(input())
nums = []
for i in range(n):
    num = input().split()
    num[1] = int(num[1])
    nums.append(num)

但我一直在尝试改进这种方法:

n = int(input())
nums = []
for i in range(n):
    nums.append([[x, int(y)] for x, y in input().split()])

这反过来给了我“ValueError:要解压的值太多(预期为 2)”

最佳答案

这就是 input().split() 在幕后所做的:

input().split()
"Boris 30".split()
["Boris", "30"]

每次迭代 ["Boris", "30"] 时,它会首先产生 "Boris" 然后是 "30"。所以当你这样做时

[... for x, y in input().split()]

你实际上在做的是:

[... for x, y in ["Boris", "30"]]

起初它可能看起来做对了,但它试图将字符串 "Boris" 解压缩成 xy (因此“解包的值太多”错误:它只需要 2 个值,但它收到了 5 个)。请注意,如果将 "Boris" 替换为 "Bo",则代码不会引发此特定错误(但它仍然不会按照您的预期执行)。

您可以通过解压缩 input().split() 本身来解决此问题:

n = int(input())
nums = []
for i in range(n):
    x, y = input().split()
    nums.append([x, int(y)])

关于python - 如何使用列表理解添加 str + int 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68120736/

相关文章:

python - 防止测试代码因为参数不同而出现 "duplication"

python - 继承 - 在方法中调用方法

python - 在 linux 中编译 python 脚本

python - python-pandas 数据框中给定权重的加权平均值

python - 为什么此 Python 3 代码无法使用 str.translate() 删除 Unicode 重音字符?

python - chrome 浏览器缺少 Django 2.0 CSS

python - 自定义 fastapi 查询参数验证

python - 如何使用 Python 缩放 SVG 文件中的路径元素

java - 有哪些好的开源程序可以对流行的图像文件类型进行模糊测试?

python - 使用求和函数在列表中添加对象时出现不支持的操作数类型错误