我正在使用 Python (2.7.9) 工作,并尝试通过元组列表来筛选这些元组的元素列表。特别地,我的对象具有以下形式:
tuples = [('a', ['a1', 'a2']), ('b',['b1', 'b2']), ('c',['c1', 'c2'])]
filter = ['a', 'c']
我刚开始学Python,最容易发现的筛选元组的方法是使用以下列表推导:
tuples_filtered = [(x,y) for (x,y) in tuples if x in filter]
过滤后的列表如下:
tuples_filtered = [('a', ['a1', 'a2']), ('c',['c1', 'c2'])]
很不幸,这个列表推导式似乎非常低效。我怀疑这是因为我的元组列表比过滤器列表(即字符串列表)要大得多。尤其是,过滤器列表包含30,000个单词而元组列表包含大约134,000个二元组。
这些二元组的第一个元素大多是不同的,但有一些重复出现的情况(实际上不确定有多少个,但与列表的基数相比并不多)。
我的问题是:是否有更有效的方法来根据这些元组的元素列表筛选元组列表?
(如果这是离题或重复,请见谅。)
相关问题(未提及效率):
numpy
这样用 C 实现的模块。但是请注意,这种情况下你需要有一个大型列表,否则将 Python 列表转换为numpy
数组的成本将高于从numpy
获得的性能提升。 - Mazdakfilter
列表。 - Martijn Pieters