2011-07-26 49 views
0

在我的代码中,我有两个不同长度的列表,我将其称为“main”和“secondary”。我需要使用辅助元素来选择main中的元素。但是,secondary包含的元素只是main中字符串的子集。在代码:从Python中的另一个列表中查找包含子字符串的列表的元素

main = ["pinecone", "treeleaf", "dishwasher"] 
secondary = ["pine", "washer", "unrelated", "flowerbed"] 

常继发比主长很多(我提到这一点的情况下,解决方案涉及的性能损失)。 我该如何去选择以“secondary”为基础的“main”中的元素,并使用最有效的(和Pythonic)方法?如果是功能,我期望

>>> selected_items = select_items(main, secondary) 
>>> print selected_items 
["pinecone", "dishwasher"] 

谢谢!

回答

3

幼稚的做法:

In [2]: main = ["pinecone", "treeleaf", "dishwasher"] 

In [3]: secondary = ["pine", "washer", "unrelated", "flowerbed"] 

In [4]: [x for x in main if any(x in y or y in x for y in secondary)] 
Out[4]: [u'pinecone', u'dishwasher'] 
+0

和它的作品!谢谢 – Einar

0
def select_items(strings, substrs): 
    return [m for m in strings if any(s in m for s in substrs)] 
相关问题