如何加速嵌套for循环而不导入任何函数

时间:2017-05-05 15:10:52

标签: performance python-3.x for-loop matrix

如何在不导入任何函数的情况下减少嵌套循环的处理时间?我的程序非常快,但编写矩阵花了很长时间。我尝试使用range 和我在网上找到的其他建议,但它仍然是一样的。

for i in matrix:
    string = ''
    for j in i:
        if j not in path and j != 'N':
             string += '_'
        elif j in path and j != 'N':
             string += '+'
        else:
             string += 'N'
f.write(string+"\n")

谢谢

1 个答案:

答案 0 :(得分:1)

如果path是字符串或列表,您可以将其转换为一组以便更快地查找:

path_set = set(path)

接下来,您可以使用join函数结合生成器表达式来避免重复的字符串连接:

output = ''.join('N' if j=='N' else '+' if j in path_set else '_' 
                 for i in matrix 
                 for j in i)

另请注意,通过重新排序条件,您可以避免必须进行两次path测试;另外,通过首先检查'N'(便宜得多),您有时可以完全跳过它。