2017-02-09 94 views
0

我對編碼通常很陌生,而且在裁剪一些數據時遇到問題。它是一個簡單的文本文件,我到目前爲止已經設法從文件中取出一大串文本,並將其分割成列表中的單個值(例如index [0] = -78.5)。所述列表中的前兩個索引分別是經度和緯度,其後的240是值(我想要分析的數據)。從那裏開始,接下來的兩個值就是經度和緯度,依此類推 - 也就是說,指數[242]和[243]也分別是經度和緯度。Python - 在切片列表中創建多個列表

我想要做的是遍歷這個列表,取出前242個索引(lat,lon,然後是240個單獨的值),並將它們放入一個列表中,然後放入一個「主」列表,創建一個嵌套列表。我想這樣做,直到我到達列表的末尾,這意味着我想有一個步驟242(我認爲?)。最終的結果應該是這個樣子:

master_list = [緯度,經度,240個值...],[緯度,經度,240個值...],...]

我需要這樣我就可以單獨訪問每個經度和緯度,同時仍然將它們與它們的值關聯起來,因爲我將根據座標裁剪這些數據。

到目前爲止,我有這樣的:

f = open('file.txt', 'r') 
file_contents = f.read() 
f.close() 

single_obs = file_contents.split(" ") 
new_list = [] 
blank_value = single_obs[0] 

def remove_blankspace(my_list): 
    for i in my_list: 
     if i != blank_value: 
      new_list.append(i) 
    return new_list 
remove_blankspace(single_obs) 

print new_list[0] 

這基本上就是我去除文件的空白空間,使串入列表中的單個元素。 'new_list'有很多元素!

我想這是一個考驗,但我的路要走,並認爲我創建了一個無限循環,因爲我不得不重新啓動我的電腦:

indiv_values = [] 

for value in new_list: 
    line = new_list[::239] 
    indiv_values.append(line) 

print indiv_values[0] 

我曾試圖通過行線分割它,因爲每個行包含lat,lon和240值。我設法創建了一個包含每行的列表,但不能將每行中的每個值都分成單獨的元素。

對不起,如果這是一個可怕的解釋,或者它不清楚我想達到什麼(編程新手!),但只是問問是否有什麼不清楚!

+1

我知道這是不好意思的建議,但你的數據聽起來像是可以從第三方numpy librar中受益的東西年。順便說一句,切成2d數組在這裏是完全自然的,而且是高效的。你應該考慮看一下numpy數組,它們非常適合data-y的東西(只要你有矩形的嵌套列表)。 –

+0

@AndrasDeak:對於一個海報來說,它被迫要求在場外參考,但你提供這個解決方案沒有什麼問題。我投了票。 – Prune

+0

@Prune謝謝:)它最常被忽視,因爲沒有很好的理由,它被建議的方式太頻繁了,而且它是一個第三方庫,如果有適當的內置工具,導入會很昂貴。正如其他人所說的,「numpy是python的[jquery](http://meta.stackexchange.com/a/19492/313143)」。 –

回答

0

假設文件看起來像:

lat1, lon1, values... 
lat2, lon2, values... 
... 

而且從你的描述,你應該能夠做到:

with open("file.txt", "r") as fobj: 
    file_contents = fobj.read() 

llv = list() 
for line in file_contents.strip("\n").split("\n"): 
    data = line.split(" ") 
    # process however you want 
    llv.append([data[0], data[1], data[2:]) 

這會給你像下面的列表(LLV):

[[lat1, lon1, [values...]], [lat2, lon2, [values2...]], ...] 
+0

謝謝你。我想最後列出一個列表,其中每個經緯度都有相同的列表,所以; [[lat1,lon1,values,values,...],[lat2,lon2,values2,values2,...],...] 該文件也是用逗號分隔的。它由空格分隔。謝謝你的幫助! –