私は python がとても好きですが、同じ行で複数の整数入力を取得する必要がある場合は、C/C++ を好みます。Python を使用する場合は、次を使用します。
a = map(int, raw_input().split())
これが唯一の方法ですか、それともpythonicの方法はありますか? そして、これは時間を考える限り多くの費用がかかりますか?
Intuitive and pythonic:
a = [int(i) for i in raw_input().split()]
Check out this discussion here: Python List Comprehension Vs. Map
組み込み関数でマップを使用している場合、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 を同等に使用する場合と同じかそれよりも高速です。