2014-10-02 74 views
1

我試圖從數據文件中找到最大降雨量。 1340行長文件中[4]元素的降水列。 下面是從文件中的一行數據的一個例子:Python如何在列表中找到最大元素

Date,Day,High T,Low T,Precip,Snow,Snow Depth 
1/1/10,1,41,19,0,0,5 

這裏是我試圖找到max_precip循環:

for line in fo: 
    max_precip = max(line.split(",")[4]) 

任何幫助或蒞臨指導,將不勝感激。多謝你們!

+1

你認爲numpy讀取數據並處理它嗎? – usethedeathstar 2014-10-02 07:06:23

回答

5

你需要這適用於所有,和你需要沉澱值轉換第一個整數

max_precip = max(fo, key=lambda line: int(line.split(',')[4])) 

這將返回一個包含最大降水全線。我假設你已經刪除了標題行。

請注意,您可能想要查看csv module來處理逗號分割。

要獲得只是降水最大值和別人不顧一切,用生成器表達式:

max_precip = max(int(line.split(',')[4]) for line in fo) 

演示:

>>> fo = '''\ 
... 1/1/10,1,41,19,0,0,5 
... 1/2/10,1,38,18,2,0,6 
... 1/3/10,1,43,17,1,0,6 
... '''.splitlines() 
>>> max(fo, key=lambda line: int(line.split(',')[4])) 
'1/2/10,1,38,18,2,0,6' 
>>> max(int(line.split(',')[4]) for line in fo) 
2 
+0

當我嘗試這個時,它給了我一個語法錯誤。對不起,我是編程新手。我沒有看到代碼的哪一部分使循環適用於所有行。 – Hense 2014-10-02 07:13:17

+0

@Hense:我通過'fo',一系列的行。 – 2014-10-02 07:14:13

+0

@Hense:我再次測試,我沒有語法錯誤。也許你之前忘了關閉一個括號? – 2014-10-02 07:15:55

1

我試圖找到從最大降雨一個數據文件。

如果這是您想要的,您可能需要預先處理您的數據,然後傳遞給內置的max函數。

max_precip = max(int(line.split(',')[4]) for line in fo) 
相關問題