如何从列表中解压缩四个变量?

扎克·盖茨

我有这个清单:

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

但是,如果您确实想这样做,我强烈建议您重新考虑您的设计。如果您有很多varlists,这听起来不错,否则请执行以下操作:

var1, var2, var3, var4 = varlist # unpack without the loop
post += len(var1) - len(var3)
post *= len(var2) / len(var4)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章