python - Python 无法从列表中删除 None 值
问题描述
我正在尝试从我拥有的 csv 文件中删除 None 值。我在下面代码的第一部分将空白值转换为 None 值,但在最后一部分当我调用 filter 它打印 column_list 但 None 值也仍然存在。我需要删除它们,以便我可以计算出每个列表中似乎不适用于它们的最大/最小值?
with (inFile) as f:
_= next(f)
list_of_lists = [[float(i) if i.strip() != '' else None for i in line.split(',')[2:]]
for line in f]
inFile.close()
log_GDP_list = [item[0] for item in list_of_lists]
social_support_list = [item[1] for item in list_of_lists]
healthy_birth_list = [item[2] for item in list_of_lists]
freedom_choices_list = [item[3] for item in list_of_lists]
generosity_list = [item[4] for item in list_of_lists]
confidence_gov_list = [item[5] for item in list_of_lists]
column_list = []
column_list.append([log_GDP_list, social_support_list, healthy_birth_list, freedom_choices_list, generosity_list, confidence_gov_list])
res = list(filter(None, column_list))
print(res)
此外,当仅在其中一个行列表(例如 log_GDP_list)上运行过滤器时,它会删除 None 值,但我仍然收到错误消息,说我无法在浮点数上运行 max() 或 min()(所有值都是从字符串浮动在代码的第一位)。
解决方案
你目前有这样的东西
l = [
float(i) if i.strip() != '' else None
for i in line.split(',')[2:]
]
你想要的是这样的:
l = [
float(i)
for i in line.split(',')[2:]
if i.strip()
]
这样,当i.strip()
评估为 False 时,该项目根本不会添加到结果列表中。