如何在列表中找到匹配的元素?

时间:2015-10-17 17:58:55

标签: python list element

如何返回列表中匹配的元素? 例如:

def search_closet(items, colour):
    >>> search_closet(['red summer jacket', 'red shoes', 'green hat'], 'red')
    ['red summer jacket', 'red shoes']
    >>> search_closet(['red shirt', 'green pants'], 'blue')
    []
    >>> search_closet([], 'mauve')
    []

我试过这个身体功能,但它不起作用:

result = []
for i in items:
    if i in colour:# problem might be here, but I really have no idea why it doesn't work.
        result.append[i]
return result

2 个答案:

答案 0 :(得分:1)

您可以使用Python的过滤方法来匹配您要查找的子字符串:

filter(lambda x: "red" in x, ['red summer jacket', 'red shoes', 'green hat'])

有关过滤器的文档:

https://docs.python.org/3/library/functions.html#filter

输出:

['red summer jacket', 'red shoes']

将其放入方法中:

def search_closet(items, colour):
    return filter(lambda x: colour in x, items)

答案 1 :(得分:1)

list comprehension应该这样做。

def search_closet(items, colour):
    return [i for i in items if colour in i] 

演示:

search_closet(['red summer jacket', 'red shoes', 'green hat'], 'red')
search_closet(['red shirt', 'green pants'], 'blue')
search_closet([], 'mauve')

输出:

['red summer jacket', 'red shoes']
[]
[]