Python 如何从包含其他列表中所有特定字符的列表中获取项目

Python 如何从包含其他列表中所有特定字符的列表中获取项目,python,python-3.x,Python,Python 3.x,我有两个列表,我想创建第三个列表,其中只包含第一个列表中包含第二个列表中所有字符的项目 我尝试了一些范围,例如,len等想法,但没有成功:/ e、 g 所有类型=['T'、'L'、'R'、'B'、'TL'、'TR'、'TB'、'LR'、'LB'、'BR'、'TLR'、'TLB'、'TRB'、'LRB'、'TBLR'] 字符=['R','B'] 到 所选类型=['BR','TBR','LRB','TBLR'] 您可以使用字符集并使用其issubset方法筛选列表中的元素: all_types =

我有两个列表,我想创建第三个列表,其中只包含第一个列表中包含第二个列表中所有字符的项目

我尝试了一些范围,例如,len等想法,但没有成功:/

e、 g

所有类型=['T'、'L'、'R'、'B'、'TL'、'TR'、'TB'、'LR'、'LB'、'BR'、'TLR'、'TLB'、'TRB'、'LRB'、'TBLR'] 字符=['R','B'] 到

所选类型=['BR','TBR','LRB','TBLR']
您可以使用字符集并使用其issubset方法筛选列表中的元素:

all_types = ['T','L','R','B','TL','TR','TB','LR','LB','BR','TLR','TLB','TRB','LRB','TBLR']
chars = {'R', 'B'}

selected_types = [ t  for t in all_types if chars.issubset(t) ]
# ['BR', 'TRB', 'LRB', 'TBLR']
如果由于某些原因无法将chars变量的类型更改为集合,则可以使用过滤器动态生成临时集合:

from functools import partial
selected_types = [*filter(partial(set(chars).issubset),all_types)]

您可以使用字符集并使用其issubset方法筛选列表中的元素:

all_types = ['T','L','R','B','TL','TR','TB','LR','LB','BR','TLR','TLB','TRB','LRB','TBLR']
chars = {'R', 'B'}

selected_types = [ t  for t in all_types if chars.issubset(t) ]
# ['BR', 'TRB', 'LRB', 'TBLR']
如果由于某些原因无法将chars变量的类型更改为集合,则可以使用过滤器动态生成临时集合:

from functools import partial
selected_types = [*filter(partial(set(chars).issubset),all_types)]
美好的注意,使用生成器比使用列表更有效,因为如果发现错误值,它将提前返回。所有c在t为c在字符它也需要更少的内存。很好!注意,使用生成器比使用列表更有效,因为如果发现错误值,它将提前返回。allc in t代表c in字符它占用的内存也更少。