繁体   English   中英

如果元素包含特殊字符,则从 python 列表中删除元素

[英]Remove elements from python list if they contain special characters

我有一个 python 列表列表,其中每个行索引代表一个值列表。 在某些情况下,行值包含特殊字符。 如果行中的任何列表元素包含特殊字符,我想从列表中删除整行。 请注意,我想在不将列表转换为 NumPy 数组或 pandas 数据帧的情况下执行此操作。 我正在考虑检查包含特殊字符的行索引,然后以这种方式删除它们,但不知道如何仅使用 python 列表来执行此操作。 另一种选择是转换为 NumPy 数组,进行数据清理,然后转换回原始列表格式但保持原始结构。

testList = [[30.0, '?', 910.0, 120.],[11.0, 25.4, 330.3, 340.0], [1.6, 23.4, 23.0, 46.0], [7.0,14.0,?,2.0], ['*', '*', 8.9, 6.4]]

newList = [[11.0, 25.4, 330.3, 340.0], [1.6, 23.4, 23.0, 46.0]]

您可以使用list comprehension推导中的any来过滤出使用isinstance的具有strlist

>>> testList = [[30.0, '?', 910.0, 120.],[11.0, 25.4, 330.3, 340.0], [1.6, 23.4, 23.0, 46.0], [7.0,14.0,'?',2.0], ['*', '*', 8.9, 6.4]]
>>> [subL for subL in testList if not any(isinstance(val, str) for val in subL)]
[[11.0, 25.4, 330.3, 340.0], [1.6, 23.4, 23.0, 46.0]]

为什么不创建一个限定符 function,然后使用列表推导来创建新列表?

def keep_me(element):
    # analyze the element, and return True to keep, or False to drop
    return True

然后使用:

filtered_list = [x for x in original_list if keep_me(x)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM