编写代码时,发现,部分变量如单独定义的话,会方便后面的使用。但是这个貌似也会延长代码运行时间。
而有时候,我也发现,一个表达式如果不定义为一个变量的话,写起来很长,不便于阅读。同时,有时候一样会增加代码的运行速度。。
因此,想请问下,到底什么时候设置变量好些呢?
我个人感觉,如果在for循环下,定义变量的话,会拖慢速度。。
而如果不存在循环的话,则定义变量,貌似则会加快速度。。
不知道是否真的如此。。
根据你提供的的内容:
data.txt
7.79,8.66,2.76,7.06,3.47
5.52,1.61,9.55,9.19,9.95
8.74,5.93,4.81,0.47,0.60
9.64,9.47,6.49,4.44,8.64
0.96,9.14,6.23,4.32,7.72
0.82,6.41,5.25,2.214,3.87
....
args.txt内容如下:
1,3,5,7
2,4,6,8
1,2,3,5
。。。s
输出:
0.113,0.083,0.760,0.009,1.000
0.260,1.000,0.910,0.313,0.244
0.249,0.965,0.905,1.000,1.000
0.377,0.184,0.298,0.720,0.080
1.000,0.143,0.246,0.660,0.720
1.000,0.205,0.050,0.214,1.000
0.585,1.000,0.550,1.000,0.410
0.211,0.930,0.735,1.000,1.000
1.000,0.218,0.360,0.100,0.110
0.515,1.000,0.560,0.585,0.420
0.306,0.220,0.900,0.316,0.209
0.180,1.000,1.000,0.285,1.000
0.110,1.000,0.922,1.000,1.000
代码如下:
argTable = []
def getNew(num,colidx):
level = argTable[colidx]
if num< level[0]:
return 1.0
if num > level[3]:
return (num-level[3])/level[3]
levelR = zip(level, level[1:len(level)])
for lR in levelR:
if lR[0] < num <= lR[1]:
return (lR[0] - num) / (lR[0] - lR[1])
if __name__ == '__main__':
with open("args.txt","rb")as f:
for line in f:
l= line.split(b",")
l = [float(i) for i in l]
argTable.append(l)
with open("data.txt","rb")as f:
with open("newdata.txt", "wb") as fw:
for line in f:
l = line.split(b",")
l = [float(i) for i in l]
newl = [getNew(i,idx) for idx,i in enumerate(l)]
newlS = [f"{i:2.3f}" for i in newl]
fw.write(",".join(newlS).encode("utf-8")+b"\r\n")
该定义就定义,你说的使用变量循环速度的差别,就算有也微乎其微,和代码可读性相比,这才是最重要的。
我看了你好几个问题,感觉纠结在这些旁枝末节啊,并不能够提升或者减少多少效率吧,你花在这里的时间更多……
不过变量定义不定义,还是具体情况具体分析,新的内存空间才会拖累速度
另外,在Python中,不可变类型,比如int类型,元组,当给变量赋值不同的值时,变量的地址会变化,太多对象的确麻烦
至于可读性,应该是尽量用面向对象的思维编程吧,提高代码的复用性,尽量不要重复写同样的代码……