使用map(int,raw_input()。split())

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用map(int,raw_input()。split())相关的知识,希望对你有一定的参考价值。

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

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

这是唯一的方法还是有任何pythonic方式来做到这一点?考虑到时间,这会花费多少?

答案

如果您使用的是内置函数的地图,那么它可能比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 performance tips页面:

唯一的限制是map的“循环体”必须是函数调用。除了列表推导的句法益处之外,它们通常比等效使用map更快或更快。

另一答案

列表理解!

直观和pythonic:

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

在这里查看这个讨论:Python List Comprehension Vs. Map

另一答案

你可以用这个:

s = raw_input().split()
s = [int(i) for i in s]
另一答案
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)

以上是关于使用map(int,raw_input()。split())的主要内容,如果未能解决你的问题,请参考以下文章

数列和+水仙花数+句子翻转

在raw_input()中使用中文提示,在CMD下中文乱码问题解决。。。

python基础语法

spl_autoload_register自动加载类回调函数实现

保留最大数

私 python input和raw_input的区别