有沒有做這方面的性能有什麼區別:兩段代碼之間的區別?
for i in range(T):
arr = [int(arr_temp) for arr_temp in input().strip().split(' ')]
這:
for i in range(T):
arr = input().strip().split(' ')
arr = list(map(int, arr))
如果是,哪個更好?
有沒有做這方面的性能有什麼區別:兩段代碼之間的區別?
for i in range(T):
arr = [int(arr_temp) for arr_temp in input().strip().split(' ')]
這:
for i in range(T):
arr = input().strip().split(' ')
arr = list(map(int, arr))
如果是,哪個更好?
根據IPython的的%timeit
功能,map
是快一點:
In [16]: s = ' '.join(map(str, range(1000)))
In [17]: %timeit [int(c) for c in s.split()]
10000 loops, best of 3: 171 µs per loop
In [18]: %timeit list(map(int, s.split()))
10000 loops, best of 3: 138 µs per loop
測試與IPython的1.2.1和Python 3.4.3和具有不同尺寸的輸入(range(1000)
,range(10)
,並range(100000)
)。
當然,有趣的問題是:是對代碼減慢你的程序(假設這就是爲什麼你的要求,而不是出於好奇心純)的這一部分。與例如閱讀input
(來自文件,我假設?)或者對數據進行計算相比,這可能是相當不重要的。
無一不是完全壓倒了由I/O輸入()從用戶 –
是對於不同的輸入尺寸這是真的嗎(即,兩種替代方案的增長功能中不存在「交叉」)。 – dfri
@joelgoldstick依賴,也許'input'從管道到腳本文件來了。但我同意這可能無關緊要。 –
這是一個完美的問題來嘗試自己; '進口時間; timeit.timeit(功能)'。 –
你對哪一點感興趣?是否內聯輸入有區別,或者list(map(...))對列表理解有不同的表現? – jonrsharpe
第一個循環在那裏,因爲我需要創建T個數組。我需要知道如果使用map()並將每個字符串數組轉換爲int將提高性能,而不是使用嵌套循環來實現相同。 – snow