与Python2相比,Python3中的相同代码慢

whi*_*kid 5 python performance python-2.7 python-3.x

在CodeChef编码了此问题,并将其作为Python3解决方案提交:

import sys

n,k = map(int,sys.stdin.readline().split(" "))
nos = map(int,sys.stdin.readlines())
ans = 0
for i in nos:
    if i>0 and i%k == 0:
        ans += 1
print(ans) 
Run Code Online (Sandbox Code Playgroud)

但是,如果我将代码编写为:

import sys

n,k = map(int,sys.stdin.readline().split(" "))
nos = map(int,sys.stdin.readlines())
ans = 0
for i in nos:
    if i>0 and i%k == 0:
        ans += 1
print ans 
Run Code Online (Sandbox Code Playgroud)

并将其提交为Python2解决方案,然后该解决方案将被接受。

我根本不明白这是怎么回事?

==== ###更新### ====

Sebastian的解决方案适用于Python3,但比我的python2.7解决方案了10 。我仍然没有得到答案,为什么最新版本的语言与以前的版本相比性能会下降?

Ray*_*Ray 0

在 python3 中,诸如mapzip返回生成器而不是列表。我认为生成器带来了使代码 TLE 的开销。要制作真正的列表,请使用列表理解[int(line) for line in std.sys]