Python输入性能 背景
我一直试图通过Kattis上的优秀挑战来复习我的Python知识。我现在被难住了,这需要很好的效率。我的解决方案得到了正确的答案,但速度太慢了。虽然其他语言可能会更快,但我从统计数据中知道,可以使用Python3解决这个问题 问题 给程序一个整数长度,然后是一个包含整数值的长度列表。我将它们添加到一个列表中,但是当我得到很长的列表时,程序在完成读取输入之前超过了3s的时间限制 任何关于如何加快速度的建议都将不胜感激 到目前为止的代码(经过理解更新)。。。Python输入性能 背景,python,performance,parsing,input,io,Python,Performance,Parsing,Input,Io,我一直试图通过Kattis上的优秀挑战来复习我的Python知识。我现在被难住了,这需要很好的效率。我的解决方案得到了正确的答案,但速度太慢了。虽然其他语言可能会更快,但我从统计数据中知道,可以使用Python3解决这个问题 问题 给程序一个整数长度,然后是一个包含整数值的长度列表。我将它们添加到一个列表中,但是当我得到很长的列表时,程序在完成读取输入之前超过了3s的时间限制 任何关于如何加快速度的建议都将不胜感激 到目前为止的代码(经过理解更新)。。。 非常感谢 也许您可以尝试使用列表理解来
非常感谢 也许您可以尝试使用列表理解来接收输入:
nums = [input() for i in range(length)]
列表理解通常比使用for循环附加到列表更快。在这里查找有关不同速度、不同循环方法的信息,您应该使用列表理解。追加要求在每一轮中查找该方法,而列表理解则要优化得多:
inputList = [input() for _ in range(length)]
为什么不稍后打印/格式化结果,并使用列表而不是添加到字符串中?字符串是不可变的,python需要为每个元素创建一个新对象(并连接值)@Pynchia Good point!我会的,谢谢。这个链接非常有用,谢谢。我现在开始使用列表理解;虽然我还没有达到读取200000行输入的3秒限制。也许一个生成器可以帮助加快速度。不过,听上去,也许整个程序可以在这里或那里进行一些优化。我自己也会看一看。这很有道理,干杯。我已经开始在输入中使用列表理解,并将考虑改进其他循环。即使进行了此更改,输入仍会受到时间限制。
inputList = [input() for _ in range(length)]