10

虽然我非常喜欢 python,但当我需要在同一行中获取多个整数输入时,我更喜欢 C/C++。如果我使用 python,我使用:

a = map(int, raw_input().split())

这是唯一的方法还是有任何pythonic方法可以做到这一点?考虑到时间,这是否会花费很多?

4

4 回答 4

8

列出理解!

直观和 Pythonic:

a = [int(i) for i in raw_input().split()]

在此处查看此讨论:Python List Comprehension Vs。地图

于 2014-05-24T19:58:15.423 回答
5

如果您使用带有内置功能的地图,那么它可能比 LC 稍快:

>>> strs = " ".join(str(x) for x in xrange(10**5))
>>> %timeit [int(x) for x in strs.split()]
1 loops, best of 3: 111 ms per loop
>>> %timeit map(int, strs.split())
1 loops, best of 3: 105 ms per loop

带用户自定义功能:

>>> def func(x):
...     return int(x)

>>> %timeit map(func, strs.split())
1 loops, best of 3: 129 ms per loop
>>> %timeit [func(x) for x in strs.split()]
1 loops, best of 3: 128 ms per loop

Python 3.3.1 比较:

>>> strs = " ".join([str(x) for x in range(10**5)])
>>> %timeit list(map(int, strs.split()))
10 loops, best of 3: 59 ms per loop
>>> %timeit [int(x) for x in strs.split()]
10 loops, best of 3: 79.2 ms per loop

>>> def func(x):                         
    return int(x)
... 
>>> %timeit list(map(func, strs.split()))
10 loops, best of 3: 94.6 ms per loop
>>> %timeit [func(x) for x in strs.split()]
1 loops, best of 3: 92 ms per loop

Python 性能提示页面:

唯一的限制是 map 的“循环体”必须是函数调用。除了列表推导的语法优势外,它们通常与等效的 map 使用一样快或更快。

于 2013-06-15T08:36:20.377 回答
2

你可以使用这个:

s = raw_input().split()
s = [int(i) for i in s]
于 2017-04-03T18:42:17.727 回答
-1
def pairs(a,k):
  answer = 0
  s = set(a)
  for v in s:
    if v+k in s:
        answer += 1

  return answer

n, k = map(int, raw_input().split())
b = map(int, raw_input().split())
print pairs(b, k)
于 2018-09-06T12:53:13.463 回答