Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从列表中删除索引_Python_List_List Comprehension - Fatal编程技术网

在Python中从列表中删除索引

在Python中从列表中删除索引,python,list,list-comprehension,Python,List,List Comprehension,我正在尝试获得如下输出: 169.764569892, 572870.0, 19.6976 但是,我有一个问题,因为我输入的文件的格式与我刚才显示的输出类似,但是数据中的某些行将“nan”作为变量,我需要删除它。 我正试图利用这一点: TData_Pre_Out = map(itemgetter(0, 7, 8), HDU_DATA) TData_Pre_Filter = [Data for Data in TData_Pre_Out if Data != 'nan'] 在这里,我试图

我正在尝试获得如下输出:

169.764569892,  572870.0,  19.6976
但是,我有一个问题,因为我输入的文件的格式与我刚才显示的输出类似,但是数据中的某些行将“nan”作为变量,我需要删除它。 我正试图利用这一点:

TData_Pre_Out = map(itemgetter(0, 7, 8), HDU_DATA) 
TData_Pre_Filter = [Data for Data in TData_Pre_Out if Data != 'nan']
在这里,我试图使用列表理解来消除“nan”,但输出仍然显示它,任何关于正确过滤的帮助都将不胜感激

编辑:不正确的输出如下所示:

169.519361471,  nan,  nan
而不是我上面展示的。另外,还有一些信息:1)这是来自一个特殊的数据文件,而不是文本文件,所以拆分行不起作用。2) 输入与输出完全相同,只是使用上面显示的map()行进行映射,并将其拆分为我实际需要的索引(即,不使用像L=[(1,2,3),(3,4,5)]这样的所有数据列表,我只从该列表中提取1和3,以提供数据结构的要点) 读取数据的方式如下:

with pyfits.open(allfiles) as HDU:
HDU_DATA = HDU[1].data

语法来自一个专门的程序,但是你得到了这个想法,而没有显示你如何读取数据,解决方案只能猜测

但是,如果
HDU\u数据
存储真实的
NaN
值,请尝试以下操作:

将变量与
NaN
s进行比较不适用于等式运算符
=

foo == nan
其中
nan
和foo都是
nan
s给出的总是false

改用
math.isnan()

import math
...if math.isnan(Data)…

根据我对你描述的理解,这可能有效

with open('path/to/file') as infile:
    for line in infile:
        vals = line.strip().split(',')
        print[v for v in vals if v!='nan']

此语句为您提供了一个元组列表。然后将元组与字符串进行比较。所有的
=比较成功。

你能给我们举一个这样一行的例子吗?这一行给出了你想要的输出:
打印(“169.764569892,572870.0,19.6976”)
。当然我会把它添加到编辑中,还有为什么会被否决?你的帖子中有一个错误的输出样本很好,但是请显示一个从文件编辑的样本行,以解决所有问题。如果他从文件中读取,那么他不会得到一个字符串吗?如果
'nan'
在文本文件中,它不会是
nan
对象;它将是实际的字符串。所以这个检查不会真的起作用,除非你想加入一个
ast.literal\u eval
或者我的观点。而且OP不执行
literal\u eval
,因此它们应该是字符串。当然,如果它存储为
nan
,并且没有被任何读入转换,那么它是一个字符串,应该与
一起使用!='nan'
。我没有看到他读取数据的任何代码,所以我们都只是猜测;-)
TData_Pre_Out = map(itemgetter(0, 7, 8), HDU_DATA)