python - 我写了以下两个代码。哪个代码合适?
问题描述
user_input = (int(e) for e in input().split())
a, b, c = user_input
或者
a, b, c = map(int, input().split())
我想知道上面哪个代码是安全、快速和高效的内存使用。请给我你的意见。
解决方案
对于理解和地图之间的一般比较,请参阅 stackoverflow 上的这个优秀链接。
您可以通过随机整数模拟输入,然后将两个代码循环运行 10 万次,您将获得明显的性能差异。
下面是代码及其输出
import time
import random
random.seed(123)
start_time = time.time()
for i in range(100000):
a, b, c = (int(e) for e in " ".join([str(random.randint(-10000000,10000000)) for i in range(3)]).split(" "))
end_time = time.time()
print("time taken method 1 is ", end_time - start_time)
start_time = time.time()
for i in range(100000):
a, b, c = map(int, " ".join([str(random.randint(-10000000,10000000)) for i in range(3)]).split(" "))
end_time = time.time()
print("time taken method 2 is ", end_time - start_time)
输出是
time taken method 1 is 1.182307481765747
time taken method 2 is 1.091458797454834
在这种情况下,两者都非常接近,但地图要好一些。然而,这一点对你来说可能是至关重要的。你会更清楚。
推荐阅读
- python - 侧面输入数据更新得很晚 - Python Apache Beam
- r - 从 R 中的 Raster* 中提取行的问题
- python - Plotly Graph 对象:显示悬停信息不起作用
- sql - 关于值是否存在于不同表中的 SQL Case 语句
- java - 使用 Java AWS SDK Vs NodeJS AWS SDK 从 lambda 访问参数存储时的性能问题
- java - RestTemplate 日志拦截器 + Spring Cloud Sleuth
- r - 为什么我在将日期转换为因子时遗漏了?
- java - Hibernate:我可以使用@ManyToMany 仅使用复合键的一个元素来映射两个表的实体吗?
- python - 如何将 f1_score 参数传递给 scikit 中的 make_scorer 学习与 cross_val_score 一起使用?
- django - POST Ant Design 使用 axios 将文件上传到 django ImageField