在这里,我试图从列表中创建一个子列表,我得到的#34;没有足够的值来解压错误。
如果我使用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)
答案 0 :(得分:2)
使用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()])
答案 1 :(得分:0)
s.split(',')
这就是错误发生的地方。
k1, k2, k3 = s.split(',')
返回3个字符串。在左侧购买只有一个变量k。您不能仅将3个变量分配给一个变量。
将其更改为
#include<stdio.h>
int binomial(int n, int k)
{
if ((k = 0) || (k == n))
return 1;
if (k>n)
return 0;
return binomial(n - 1, k - 1) + binomial(n - 1, k);
}
int main()
{
int a, b, res;
a = 4;
b = 2;
res = binomial(a, b);
printf("The result is %d", res);
return 0;
}
会工作
答案 2 :(得分:0)
试试这个:
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']]
我只修复你的代码,但有更好的方法来编写这段代码
答案 3 :(得分:-1)
您需要for (x, y, z) in k1:
而不是for (x, y, z) in k:
。