2017-07-07 57 views
-1

当我们被要求收集一系列从键盘的数字,并将其存储为int类型的列表,这里有两种方式使用:两个集合了一系列的键盘,这是投入的方式更好

A = [int(x) for x in input().split()]A = list(map(int, input().split()))

当我们从键盘输入1 2时,两个A都是[1, 2]。但我不确定哪个更好?或者如果有更好的想法来完成这项工作?

感谢您的任何建议!

+0

两者都是非常有效的方法。我不知道他们中的任何一个原则上是否比另一个好。但是,您可以自己测试一下,看看哪一个在不同条件下运行得更快(例如,针对不同的输入长度) –

+0

如果问题出在哪里? “更好”是一个味道的问题,除非你指定在哪个标准下:可读性,时间效率,简洁性... – Julien

+1

使用列表理解,你的第一个建议,通常被认为是更多的“Pythonic”。我会为此而努力。 – JohanL

回答

0

如果我们定义更好的可读性,我通常更喜欢列表理解,如果速度更好,这里是timeit模块显示的内容。

import timeit 
print(timeit.timeit("""A = [int(x) for x in '1 2 3 4 5'.split()]""", number=1000000)) 
2.7859667999999997 

import timeit 
print(timeit.timeit("""A = list(map(int, '1 2 3 4 5'.split()))""", number=1000000)) 
2.3795187999999996 

这样,它出现在地图上的方法是比另一个更快一点点。

然而,根据您使用的列表,您可以通过简单地使用'()'更改'[]'来构建生成器,并且仍然具有列表理解的可读性,这里是我得到的:

import timeit 
print(timeit.timeit("""A = (int(x) for x in '1 2 3 4 5'.split())""", number=1000000)) 
1.0318644 

你可以看到,这要快很多。

相关问题