首页 > 解决方案 > 删除python列表中的“nan”

问题描述

我是 python 新手,我有一个简单的问题,我怎么能删除这个列表的第一个“nan”,但保留第二个,以防值重复。

例如:

my_list = ['experiencia: 4',
           'nan',
          'experiencia: 2',
           'nan',
           'nan',
          'experiencia: 10',
           'nan',
          'experiencia: 2',
           'nan',
          'experiencia: 3',
           'nan',
           'nan',
           'nan',
           'experiencia: 9',
           'nan',
           'experiencia: 10']

我想要获得的输出如下:

 my_list = ['experiencia: 4',
          'experiencia: 2',
           'nan',
          'experiencia: 10',
          'experiencia: 2',
          'experiencia: 3',
           'nan',
           'nan',
           'experiencia: 9',
           'experiencia: 10']

标签: pythonlist

解决方案


你可以……发挥创意:

按其内容对整个列表进行分组,然后再次分解分组。如果键是 a"nan"您需要少用一个,则分组值具有元素 - 对于不"nan"使用分组值的情况。最后,删除空"nan"分组(key = "nan", value =["nan"]由于减一而减少为 []):

my_list = ['experiencia: 4',
           'nan',
          'experiencia: 2',
           'nan',
           'nan',
          'experiencia: 10',
           'nan',
          'experiencia: 2',
           'nan',
          'experiencia: 3',
           'nan',
           'nan',
           'nan',
           'experiencia: 9',
           'nan',
           'experiencia: 10']

from itertools import groupby


result = [x for y in (list(amount) if value != "nan" else ["nan"] * (len(list(amount))-1)
                  for value, amount in groupby(my_list)) for x in y if x]
print(result)

输出(重新格式化):

['experiencia: 4', 
 'experiencia: 2', 
 'nan', 
 'experiencia: 10', 
 'experiencia: 2',
 'experiencia: 3', 
 'nan', 
 'nan', 
 'experiencia: 9', 
 'experiencia: 10'] 

阅读:


推荐阅读