it-swarm.com.de

using map (int, raw_input (). split ())

Obwohl ich Python sehr mag, bevorzuge ich C/C++, wenn ich mehrere Integer-Eingaben in derselben Zeile haben möchte. Wenn ich Python verwende, verwende ich:

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

Ist dies der einzige Weg, oder gibt es einen pythonischen Weg, dies zu tun? Und kostet das viel Zeit?

8
Aswin Murugesh

Wenn Sie eine Karte mit integrierter Funktion verwenden, ist diese möglicherweise etwas schneller als die LC-Karte:

>>> 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

Mit benutzerdefinierter Funktion:

>>> 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-Vergleiche:

>>> 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

Von Python-Leistungstipps Seite:

Die einzige Einschränkung ist, dass der "Schleifenkörper" der Karte ein Funktionsaufruf sein muss. Neben den syntaktischen Vorteilen von Listenverständnissen sind sie häufig so schnell oder schneller als die entsprechende Verwendung von Karten.

4

Listenverständnisse!

Intuitiv und pythonisch:

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

Schauen Sie sich diese Diskussion hier an: Python List Comprehension Vs. Karte

7
phil-ociraptor

Sie können dies verwenden:

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