在这里,我正在尝试从列表中制作子列表,并且得到"没有足够的值来解压缩错误。
如果我使用k=s.split(',')
它会显示错误,而如果我使用 k1=[s.split(',')]
,它在解包时不会显示任何错误。
两者都具有相同的类型,相同的大小和相同的内容
我的代码:
inputs = ["1, foo, bar", "2, tom, jerry"]
outputs1=[]
for s in inputs:
print(s)
k=s.split(',')
print(k,type(k),len(k))
k1=[s.split(',')]
print(k1,type(k1),len(k1))
for (x, y, z) in k:
outputs1.append([int(x), y.strip(), z.strip()])
print(outputs1)
使用 k
,你有一个包含三个元素的元组,在for (x, y, z) in k
中,你尝试将这三个元素中的每一个解压缩为另外三个元素。这行不通。使用 k1
,你有一个列表,里面有一个三元素元组。在这里,for (x, y, z) in k1
可以工作,但这完全没有意义。
相反,您应该直接解压缩值以x, y, z
:
for s in inputs:
x, y, z = s.split(',')
outputs1.append([int(x), y.strip(), z.strip()])
k = s.split(',')
这是错误出现的地方。
在您的情况下s.split(',')
返回 3 个字符串。买 在左手边只有一个变量 k。不能将 3 个变量仅分配给一个变量。
将其更改为 k1, k2, k3 = s.split(',')
将起作用
试试这个:
inputs = ["1, foo, bar", "2, tom, jerry"]
outputs1=[]
for s in inputs:
print(s)
k=s.split(',')
print(k,type(k),len(k))
k1=[s.split(',')]
print(k1,type(k1),len(k1))
for (x, y, z) in k1:
outputs1.append([int(x), y.strip(), z.strip()])
print(outputs1)**
输出1:
[[1, 'foo', 'bar'], [2, 'tom', 'jerry']]
我只是在修复您的代码,但是有更好的方法来编写此代码
你需要for (x, y, z) in k1:
而不是for (x, y, z) in k:
。