gpt4 book ai didi

python - 在 python 中处理大量输入

转载 作者:行者123 更新时间:2023-11-28 20:51:16 25 4
gpt4 key购买 nike

我几个月前开始学习编程,最近才发现 codechef .
问题是在使用大量输入的问题上,我的代码总是超出时间限制。我什至无法制作 input test工作。

来自 codechef 的描述:

Input

The input begins with two positive integers n k (n, k<=10^7). The next n lines of input contain one positive integer ti, not greater than 10^9, each.

输出

Write a single integer to output, denoting how many integers ti are divisible by k.

代码如下:

n, t = [int(x) for x in input().split()]
c = 0
for i in range(n):
if not int(input()) % t:
c += 1
print(c)

我不确定我错过了什么。我怎样才能更快地处理这个问题?

最佳答案

这真的应该是评论,但无论如何。

请注意,有一个公认的 Python 2 解决方案 here ,运行时间为 45.77 秒,所以这显然是可能的。我认为您是 Python 3 缓慢 I/O 的受害者(看起来他们使用的是 3.1.2)。在一个 200 万行的输入文件中(恰好没有任何可整除的数字):当有很多时没有太大区别),在修改为与 2 和 3 兼容的代码版本上,我得到:

~/coding$ time python2.6 enormread.py < sample.txt 
0

real 0m3.971s
user 0m3.712s
sys 0m0.256s
~/coding$ time python2.7 enormread.py < sample.txt
0

real 0m2.637s
user 0m2.428s
sys 0m0.204s
~/coding$ time python3.2 enormread.py < sample.txt
0

real 0m10.412s
user 0m10.065s
sys 0m0.344s
~/coding$ time ~/sys/Python-3.3.0a2/python enormread.py < sample.txt
0

real 0m6.776s
user 0m6.336s
sys 0m0.436s
~/coding$ time pypy enormread.py < sample.txt
0

real 0m2.211s
user 0m1.948s
sys 0m0.028s

将@agf 的 (sum(not int(line) % t for line in sys.stdin[.buffer])) 放入混合中:

~/coding$ time python2.7 enormfast.py < sample.txt 
0

real 0m1.454s
user 0m1.436s
sys 0m0.016s
~/coding$ time python3.2 enormfast.py < sample.txt
0

real 0m2.243s
user 0m2.228s
sys 0m0.012s

关于python - 在 python 中处理大量输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10321334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com