2017-02-09 97 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,...],...] 该文件也是用逗号分隔的。它由空格分隔。谢谢你的帮助! –