如何在Python 3.x中过滤出包含无效字符的列表元素?

kar*_*jan 4 python string conditional list python-3.x

我正在Python 3.x中编写一个函数,该函数将字符串变量列表和有效字符列表作为参数,并返回包含原始列表元素(仅由有效字符组成)的过滤列表。我想我可以使用两个嵌套的For循环来遍历列表元素,然后遍历给定元素的每个字符来实现结果,但是我想知道是否存在使用Python方法或函数获得此结果的更有效方法。

对于以下两个列表:

valid_characters = ['A','B','C']
my_list = ['abcde','AbCB','ABCBA','XYZ','CBCBB','CABzBAC']
Run Code Online (Sandbox Code Playgroud)

该函数将返回过滤列表 ['ABCBA','CBCBB']

blh*_*ing 6

您可以转换valid_characters为集合,以便通过测试集合是否为字符串中字符的超集来有效地确定字符串是否仅由集合中的字符组成:

valid_set = set(valid_characters)
print([s for s in my_list if valid_set.issuperset(s)])
Run Code Online (Sandbox Code Playgroud)

输出:

['ABCBA', 'CBCBB']
Run Code Online (Sandbox Code Playgroud)