基于字符串模式删除列表中元素的最佳方法

ars*_*l88 4 python regex python-2.7

我有一张桌子(列表列表)。示例输出如下:

table = ['dd03', 'ff0000', 'a30b32', '000000', '234fas', '00ffff', 'ffffff', '0000ff', '0200ff']
Run Code Online (Sandbox Code Playgroud)

我想删除列表中所有包含 'ff' 任意组合的元素,或者删除该字符元素中至少有 2/6 个字符的元素。

我已经做了一个列表理解来完成这项工作,但它显然不是很有效,而且肯定可以用更少的代码来完成。

    table = [[part for part in my_list if part != 'ffffff'] for my_list in table]
    table = [[part for part in my_list if part != 'ffff00'] for my_list in table]
    table = [[part for part in my_list if part != 'ff0000'] for my_list in table]
    table = [[part for part in my_list if part != '0000ff'] for my_list in table]
    table = [[part for part in my_list if part != '00ffff'] for my_list in table]
    table = [[part for part in my_list if part != 'ffff'] for my_list in table]
    table = [[part for part in my_list if part != 'ff'] for my_list in table]
    table = [[part for part in my_list if part != 'ffff02'] for my_list in table]
    table = [[part for part in my_list if part != '0200ff'] for my_list in table]
Run Code Online (Sandbox Code Playgroud)

我想可能会为模式设置一个正则表达式变量来查找然后删除匹配的元素......但我不太熟悉这个包并在这种情况下实现它。

任何方向将不胜感激。

干杯

Mos*_*oye 6

一个简单的遏制检查应该有效:

[item for item in table if 'ff' not in item]
Run Code Online (Sandbox Code Playgroud)

'至少 2/6' 条件非常多余(长度是常数 6),足以检查项目是否不包含'ff'.