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

好的,首先,我是 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"xand y(因此“解包的值太多”错误:它期望只有 2 个值,但它收到了 5 个值)。请注意,如果"Boris"被替换为"Bo",则代码不会引发此特定错误(但它仍然不会执行您期望的操作)。

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

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


以上是如何使用列表理解添加str+int列表?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>