如何移除元组列表中首元素在指定列表内的元组
过滤元组列表的实现方案
需求很明确:从包含元组的列表里,剔除所有元组首元素出现在指定词语列表中的项。
先看原始数据:
list_of_tuples = [ ("apple", 2), ("banana", 54), ("flower", 5), ("apple", 4), ("fruit", 3) ] list_of_words = [ "apple", "banana" ]
方法一:列表推导式(简洁直观)
直接用列表推导式筛选符合条件的元组,一行代码就能搞定:
filtered_list = [t for t in list_of_tuples if t[0] not in list_of_words]
运行后filtered_list就是目标结果:
[("flower", 5), ("fruit", 3)]
方法二:用集合优化查找效率(大数据量场景)
如果list_of_words包含大量元素,把它转成集合能大幅提升查找速度(集合成员判断是O(1),列表是O(n)):
word_set = set(list_of_words) filtered_list = [t for t in list_of_tuples if t[0] not in word_set]
结果和上面完全一致,但处理大规模数据时性能更优。
内容的提问来源于stack exchange,提问作者Elisa Nu
相关产品推荐
相关产品推荐

