我需要改进与循环和字符串一起使用的 python 函数 它是如何工作的?
I need to improve python function that works with loops and string how it does?
我有这样的问题我在 python2.7 上有这段代码。对于对象中包含略多于 70000 个项目的对象,它大约需要 60 秒。这个怎么运作?它获取一个对象,该对象具有指向另一个对象的路径,并将它们转换为 ASCII 字符串。我认为它这么慢的问题是循环。
def createPath(self, path, NameOfFile ):
temp = []
for j in range( path.shape[0] ):
rr = path[j][0]
obj = NameOfFile[rr]
string = ''.join(chr(i) for i in obj[:])
string = string.replace("aaaa","bbbb")
temp.append(string)
return ( np.array(temp) )
这不是我自己的代码,我是在网上找到的,所以我的问题是什么?如何使这段代码更快?我在 python 方面没有丰富的经验,但也许有一些有用的库或技巧可能会有所帮助。感谢所有帮助,任何想法都可能有所帮助。
应用循环提升可能会提高性能。假设 NameOfFile
是一个列表(如果它是一个字典,情况类似)并且 NameOfFile
中的所有条目都将被访问并且 NameOfFile
的长度是大部分时间小于 path.shape[0]
,因此我们可以计算一次对它们的转换:
def createPath(self, path, NameOfFile ):
NameOfFile_ = []
for obj in NameOfFile:
name = ''.join(chr(i) for i in obj)
name = name.replace("aaaa","bbbb")
NameOfFile_.append(name)
temp = []
for j in range(path.shape[0]):
rr = path[j][0]
temp.append(NameOfFile_[rr])
return np.array(temp)
使用与@DanD. 相同的想法,但尽量避免 for 循环:
def createPath(self, path, NameOfFile):
NameOfFile_ = [''.join(chr(i) for i in obj).replace("aaaa", "bbbb") for obj in NameOfFile]
return np.array(NameOfFile_[obj[0]] for obj in path))
解释器开销应该减少,尽管我无法检查性能——事实上,我什至不确定 for obj in path
在这种情况下是否有效。
我有这样的问题我在 python2.7 上有这段代码。对于对象中包含略多于 70000 个项目的对象,它大约需要 60 秒。这个怎么运作?它获取一个对象,该对象具有指向另一个对象的路径,并将它们转换为 ASCII 字符串。我认为它这么慢的问题是循环。
def createPath(self, path, NameOfFile ):
temp = []
for j in range( path.shape[0] ):
rr = path[j][0]
obj = NameOfFile[rr]
string = ''.join(chr(i) for i in obj[:])
string = string.replace("aaaa","bbbb")
temp.append(string)
return ( np.array(temp) )
这不是我自己的代码,我是在网上找到的,所以我的问题是什么?如何使这段代码更快?我在 python 方面没有丰富的经验,但也许有一些有用的库或技巧可能会有所帮助。感谢所有帮助,任何想法都可能有所帮助。
应用循环提升可能会提高性能。假设 NameOfFile
是一个列表(如果它是一个字典,情况类似)并且 NameOfFile
中的所有条目都将被访问并且 NameOfFile
的长度是大部分时间小于 path.shape[0]
,因此我们可以计算一次对它们的转换:
def createPath(self, path, NameOfFile ):
NameOfFile_ = []
for obj in NameOfFile:
name = ''.join(chr(i) for i in obj)
name = name.replace("aaaa","bbbb")
NameOfFile_.append(name)
temp = []
for j in range(path.shape[0]):
rr = path[j][0]
temp.append(NameOfFile_[rr])
return np.array(temp)
使用与@DanD. 相同的想法,但尽量避免 for 循环:
def createPath(self, path, NameOfFile):
NameOfFile_ = [''.join(chr(i) for i in obj).replace("aaaa", "bbbb") for obj in NameOfFile]
return np.array(NameOfFile_[obj[0]] for obj in path))
解释器开销应该减少,尽管我无法检查性能——事实上,我什至不确定 for obj in path
在这种情况下是否有效。