我怎样才能提高我的算法的速度,哪怕是一点点。 因为我这样做的原因,我实际上一点也不关心速度,但我想知道如果我这样做了,我能改变什么。我想知道的不仅仅是指出需要改变的具体事情,我真正想知道的是,你是如何知道有一种更有效的方法,以及这种方法是如何工作的。基本上,如果您想了解低级代码是如何工作的,以便能够在更高的级别编写更好的代码,那么应该遵循什么样的思路
def decode_all(ob):
if(type(ob)==list):
for i in range(len(ob)):
ob[i] = decode_all(ob[i])
if(type(ob)==dict):
for i in ob.copy():
ob[i] = decode_all(ob[i])
if(type(i)==bytes):
ob[i.decode()] = ob[i]
ob.pop(i)
if(type(ob)==tuple):
new_ob = []
for i in ob:
new_ob.append(decode_all(i))
ob = tuple(new_ob)
if(type(ob)==bytes):
return ob.decode()
return ob
修改代码:
通常,我同意使用
if ... elif ... elif ...
,但在这种情况下,直接返回结果更简单一些注意事项:
ob
或其任何成分(无论深度)均未被修改;所有新集合和元素都将返回,但它们的分配会产生一些(轻微的)性能代价李>isinstance()
,而不是if type(x) == y
(这只是一个好习惯,在这里对基类型没有特别的优势)李>tuple([x for x in list_])
比{一些备选方案:
if ... elif ...
:.register
,例如处理新类型):相关问题 更多 >
编程相关推荐