在編程過程中,優化程序效率是非常重要的,而輸入數據是影響程序效率的一個因素。在Python中,有很多技巧可以優化輸入數據的過程,從而提高程序效率。下面介紹幾個常用的Python輸入技巧。
一、使用sys.stdin.readline()代替input()
使用input()函數輸入數據時,內存中會存儲輸入的值,這會導致佔用大量內存,尤其在數據量較大時,會極大地影響程序效率。而使用sys.stdin.readline()則可以直接讀取標準輸入中的一行數據,不會佔用過多內存。
import sys
# 一行一行讀取標準輸入的數據
a = sys.stdin.readline().rstrip()
二、使用多行輸入
在輸入多行數據時,如果使用input()函數,則需要在每一行中手動輸入。而使用多行輸入則可以將多個數據一次性輸入。
n = int(input()) # 輸入數據的數量
a = list(map(int, input().split())) # 將一行中的多個數字轉化為列表
上面代碼中,首先輸入n,然後將一行中的多個數字通過split()分割成一個列表a。
三、使用快速讀入
快速讀取大量數據需要使用快速讀入技巧,在Python中,可以使用快速讀入函數readlines()實現。
n = int(input()) # 輸入數據的數量
a = []
for i in range(n):
a.append(list(map(int, input().split())))
# 使用快速讀入函數readlines()
b = []
for line in sys.stdin.readlines():
b.append(list(map(int, line.split())))
上面代碼中,使用input()函數先輸入一個n,然後使用for循環讀取n行數據,將每行的數據存儲到列表a中。而使用readlines()則可以一次性將標準輸入所有的數據讀取到列表b中。
四、使用numpy優化輸入過程
對於需要讀取大量數據的程序,可以使用NumPy庫來進一步優化輸入過程,使用NumPy的fromfile()函數可以快速地從磁盤中讀取多個數據。
import numpy as np
# 從指定文件中讀取數據
a = np.fromfile('data.txt', dtype=np.int32)
# 從標準輸入中讀取數據
b = np.fromstring(sys.stdin.read(), dtype=np.int32, sep=' ')
上面代碼中,使用fromfile()函數可以從指定的文件中讀取數據,而使用fromstring()函數則可以從標準輸入中讀取數據,並且可自定義數據類型、數據分割符等參數。
五、使用pandas優化輸入過程
對於需要快速讀取CSV文件並進行數據處理的程序,可以使用Pandas庫來優化輸入過程。
import pandas as pd
# 讀取指定的CSV文件
data = pd.read_csv('data.csv', header=None)
# 從標準輸入中讀取CSV格式的多個數據
data = pd.read_csv(sys.stdin, header=None)
上面代碼中,使用read_csv()函數從指定CSV文件或標準輸入中讀取數據,可以支持大規模數據的快速讀取和處理。
原創文章,作者:EORQ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/145654.html