Bien que j'aime beaucoup le python, quand je dois obtenir plusieurs entrées entières dans la même ligne, je préfère le C/C++. Si j'utilise python, j'utilise:
a = map(int, raw_input().split())
Est-ce le seul moyen ou existe-t-il un moyen pythonique de le faire? Et cela coûte-t-il beaucoup dans la mesure où le temps est compté?
Si vous utilisez une carte avec une fonction intégrée, elle peut être légèrement plus rapide que 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
Avec fonction définie par l'utilisateur:
>>> 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
Comparaisons 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
De Conseils de performance Python page:
La seule restriction est que le "corps de boucle" de la carte doit être un appel de fonction. Outre l'avantage syntaxique de la compréhension de liste, elles sont souvent aussi rapides ou plus rapides que l'utilisation équivalente de map.
Intuitif et Pythonique:
a = [int(i) for i in raw_input().split()]
Découvrez cette discussion ici: Python List Comprehension Vs. Carte
Vous pouvez utiliser ceci:
s = raw_input().split()
s = [int(i) for i in s]