如何返回列表中匹配的元素? 例如:
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
答案 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']
[]
[]