可以说我有以下清单
periods = ['2017 Q1', 'TEST2', '2018 Q4','2017 Q2', '2019Q3', '2017 Q3', '2017 Q4', '2017 FY', 'TEST']
我想过滤句点以返回列表中包含该列表元素的任何元素
master_list = ['Q1', 'Q2', 'Q3', 'Q4', 'S1', 'S2', 'FY']
所以我期望
filtered = ['2017 Q1', '2018 Q4','2017 Q2', '2019 Q3', '2017 Q3', '2017 Q4', '2017 FY']
当我做这样的事情
a = [period for period in periods for master in master_list if period in master]
但这返回:
filtered = ['2017 Q1', '2017 Q2', '2019 Q3', '2017 Q3', '2017 Q4' ,'2018 Q4' ,'2017 FY']
这一个已经重新排序。
最佳答案
您需要检查是否master in period
:
master_list = ['Q1', 'Q2', 'Q3', 'Q4', 'S1', 'S2', 'FY']
periods = ['2017 Q1', 'TEST2', '2018 Q4', '2017 Q2', '2019Q3', '2017 Q3', '2017 Q4', '2017 FY', 'TEST']
a = [period for period in periods for master in master_list if master in period]
print(a)
输出量
['2017 Q1', '2018 Q4', '2017 Q2', '2019Q3', '2017 Q3', '2017 Q4', '2017 FY']
说明
表达式
'2017 Q1' in 'Q1'
检查'2017 Q1'
是否是'Q1'
的子字符串,即False
,另一方面'Q1' in '2017 Q1
'是True