【发布时间】:2021-06-22 22:01:59
【问题描述】:
最近,我一直在尝试一些竞赛编码,一个非常常见的事情(至少在我看来是常见的)是提供一个由空格分隔的整数列表作为输入。例如:
>>> 5 6 7 8 8 1 3 2
我希望能够读取此输入并将其转换为 Python 中的列表:
>>> 5 6 7 8 8 1 3 2
[5, 6, 7, 8, 8, 1, 3, 2]
到目前为止,这是我遇到的最有效的方法:
newList = list(map(int, input.split()))
print(newList)
我还看到了一种方法,您可以将输入作为字符串读取,然后将其设为列表,但我认为 map 仍然更有效。
有没有比这更有效的方法来读取整数列表并将其转换为列表?谢谢!
【问题讨论】:
-
“我也见过 .split() 方法,但我认为 map 仍然更有效。” - 您在当前方法中同时使用这两种方法。
-
这归结为语义、偏好以及某些人可能称之为 Pythonic 的东西。根据给定的样本输入,您所拥有的一切都很好。与枚举
input.split()并附加到列表相比,您可能节省了几个周期,但性能提升可以忽略不计。无论哪种方式,解决方案实际上都是O(n)。 -
@h0r53 是的,我解决了这个问题,这可能有点不清楚,抱歉。我没有意识到那张地图是
O(n),酷! -
map只是为集合中的每个元素调用一个函数。因此该函数被调用n次,其中n是集合中的项目数。map本身不一定是O(n),但调用map()n次是。int()是O(1)。所以在这种情况下你有O(n) * O(1)=O(n)。