我有这个清单:
varlist = ['1', 'King', 't', '1']
我试图将这四个变量打包成一个for
循环。
for var1, var2, var3, var4 in varlist:
post += len(var1)-len(var3)
post *= len(var2)/len(var4)
运行此循环时,得到以下信息:
ValueError: need more than 1 value to unpack
我怎样才能解决这个问题?
您实际上无法做到这一点。有一种快速的技巧可以使它按您认为的方式工作,但是最终您尝试执行的操作不起作用。这是快速的技巧:
varlist = ['1', 'King', 't', '1']
for var1, var2, var3, var4 in [varlist]: # note the brackets
post += len(var1)-len(var3)
post *= len(var2)\len(var4) # note that this line fails, because \ isn't /
您无法执行此操作的原因是,for
循环会迭代可迭代对象中的每个元素,并将该值分配给您告诉它的对象。在这种情况下,中的第一个元素varlist
是'1'
,不是('1','King','t','1')
。这样一来,for <stuff> in [varlist]
您就可以将当前文件包装varlist
在另一个列表中,并对其进行迭代。THAT的第一个元素是['1','King','t','1']
,无法解包到中var1, var2, var3, var4
。
但是,如果您确实想这样做,我强烈建议您重新考虑您的设计。如果您有很多varlist
s,这听起来不错,否则请执行以下操作:
var1, var2, var3, var4 = varlist # unpack without the loop
post += len(var1) - len(var3)
post *= len(var2) / len(var4)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句