好的,首先,我是 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"
解压缩成 x
和 y
(因此“解包的值太多”错误:它只需要 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/