将多个元素(基于条件)移动到lis的末尾

2024-09-29 02:20:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两个Python列表:

main_l = ['Temp_Farh', 'Surface', 'Heater_back', 'Front_Press',
'Lateral_Cels', 'Gauge_Finl','Gauge_Relay','Temp_Throw','Front_JL']
hlig = ['Temp', 'Lateral', 'Heater','Front']

如果元素包含hlig中列出的字符串,我需要将它们从main_l移到列表的末尾。在

main_l的最终版本应如下所示:

^{pr2}$

我的尝试:

我首先尝试查找列表main_l是否包含第二个列表hlig中列出的子字符串的元素。我是这样做的:

`found` = [i for e in hlig for i in main_l if e in i]

foundmain_l的子列表。问题是:现在我有了这个列表,我不知道如何选择不包含hlig中的子字符串的元素。如果我可以这样做,那么我可以将它们添加到一个列表not_found,然后我可以将它们连接成这样:not_found + found-这样就可以得到我想要的了。在

问题:

有没有办法将匹配的元素移动到列表的末尾main_l?在


Tags: 字符串in元素列表formainnotheater
2条回答

我会重写你要写的:

main_l = ['Temp_Farh', 'Surface', 'Heater_back', 'Front_Press', 'Lateral_Cels', 'Gauge_Finl','Gauge_Relay','Temp_Throw','Front_JL']
hlig = ['Temp', 'Lateral', 'Heater','Front']

found = [i for i in main_l if any(e in i for e in hlig)]

那么解决方案显而易见:

^{pr2}$

编辑:根据Sven Marnach的评论删除列表理解前后的方括号(对aviraldg的解决方案)

您可以使用每个元素是否包含来自hlig的字符串作为键对main_l进行排序:

main_l.sort(key=lambda x: any(term in x for term in hlig))

相关问题 更多 >