用Python编写代码.有一段代码,想知道它是否可以更优雅地完成......
# Statistics format is - done|remaining|200's|404's|size
statf = open(STATS_FILE, 'r').read()
starf = statf.strip().split('|')
done = int(starf[0])
rema = int(starf[1])
succ = int(starf[2])
fails = int(starf[3])
size = int(starf[4])
...
Run Code Online (Sandbox Code Playgroud)
这继续下去.我想知道在将行拆分成列表之后是否有更好的方法将每个列表分配到var中.我有近30行为vars分配索引值.只是想了解更多关于Python的信息......
done, rema, succ, fails, size, ... = [int(x) for x in starf]
Run Code Online (Sandbox Code Playgroud)
更好:
labels = ("done", "rema", "succ", "fails", "size")
data = dict(zip(labels, [int(x) for x in starf]))
print data['done']
Run Code Online (Sandbox Code Playgroud)
到目前为止,我不喜欢的答案是,他们将所有内容都放在一个表达式中.您希望减少代码中的冗余,而不必立即执行太多操作.
如果该行上的所有项目都是整数,则将它们全部转换,这样您就不必int(...)每次都写入:
starf = [int(i) for i in starf]
Run Code Online (Sandbox Code Playgroud)
如果只有某些项目是整数 - 也许有些是字符串或浮点数 - 那么你可以转换那些:
for i in 0,1,2,3,4:
starf[i] = int(starf[i]))
Run Code Online (Sandbox Code Playgroud)
分块是有用的; 如果你有很多项目 - 你说你有30个 - 你可以把它分开:
done, rema, succ = starf[0:2]
fails, size = starf[3:4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
652 次 |
| 最近记录: |