it-roy-ru.com

используя карту (int, raw_input (). split ())

Хотя мне очень нравится python, когда мне нужно получить несколько целочисленных входных данных в одной строке, я предпочитаю C/C++. Если я использую Python, я использую:

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

Это единственный способ или есть какой-нибудь Pythonic способ сделать это? И стоит ли это дорого, если учесть время? 

8
Aswin Murugesh

Если вы используете карту со встроенной функцией, то она может быть немного быстрее, чем 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 страница:

Единственное ограничение заключается в том, что «тело цикла» карты должно быть функцией вызов. Помимо синтаксического преимущества списочных представлений, они являются часто так быстро или быстрее, чем эквивалентное использование карты.

4
Ashwini Chaudhary

Список понимания!

Интуитивно понятный и Pythonic:

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

Проверьте это обсуждение здесь: Понимание списка Python Vs. Карта

7
phil-ociraptor

Вы можете использовать это:

s = raw_input().split()
s = [int(i) for i in s]
0
Tanay Agrawal