我有这个清单:
varlist = ['1', 'King', 't', '1']
Run Code Online (Sandbox Code Playgroud)
我试图在for
循环中解压缩这四个变量;
for var1, var2, var3, var4 in varlist:
post += len(var1)-len(var3)
post *= len(var2)/len(var4)
Run Code Online (Sandbox Code Playgroud)
当我运行此循环时,我得到以下内容:
ValueError: need more than 1 value to unpack
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
解包与迭代不同.你需要这样做:
var1, var2, var3, var4 = varlist
post += len(var1)-len(var3)
post *= len(var2)/len(var4)
Run Code Online (Sandbox Code Playgroud)
这里不需要循环.
你实际上不能这样做.有一个快速的黑客让它按照你的想法运作,但最终你想要做的事情是行不通的.这是快速黑客:
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 /
Run Code Online (Sandbox Code Playgroud)
你不能这样做的原因是一个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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
119 次 |
最近记录: |