Python过滤列表,小写和大写并不重要

时间:2017-12-02 11:11:25

标签: python list filter lowercase

我需要在Python中编写一个需要2个参数的函数:列表和字符串。该函数必须返回列表中存在的那些产品的列表。 这是一个例子:

products = ['Chocolat', 'peanutbutter','sugar', 'Chocolatcream']
result = myfunction(products, 'chocolate')

- >它应该是['Chocolat', 'Chocolatecream'] ...等等。重要的是,小写和大写并不重要!

这是我的代码,我写的......:

def myfunction(products, product):
    list = products

    trueorfalse =[ product.lower() in x for x in [element.lower() for element in list]]
    eempty = []
    for i in trueorfalse:
        if trueorfalse[i] == True:
            eempty.append(products[i])
            ++i
    return eempty   

products = ['Csokolade', 'MogyoroVAJ', 'valami', 'ize', 'kutyakaja', 'vajaskenyer']
res=myfunction(products,'VAJ')
print(res)

我希望结果['MogyoroVAJ', 'vajaskenyer'],但我得到了['MogyoroVAJ', 'MogyoroVAJ']

我不知道如何解决它,我尝试了很多不同的解决方案,但每次都有某种不同的问题。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

def myfunction(products, product):


    emptylist = []
    for items in products:

        if product.lower() in items.lower():
            emptylist.append(items)


    return emptylist

products = ['Csokolade', 'MogyoroVAJ', 'valami', 'ize', 'kutyakaja', 'vajaskenyer']
res = myfunction(products,'VAJ')
print(res)

但是,请记住:

products = ['Chocolat', 'peanutbutter','sugar', 'Chocolatcream']
result = myfunction(products, 'chocolate')

可能无效。 你需要一个确切的子串。

products = ['Chocolat', 'peanutbutter','sugar', 'Chocolatcream']
result = myfunction(products, 'chocolat')

将返回正确的列表。

你可以这样做:

def myfunction(products, product):

    product = product[0:len(product)-1]
    print(product)
    emptylist = []
    for items in products:

        if product.lower() in items.lower():
            emptylist.append(items)

    return emptylist

products = ['Chocolat', 'peanutbutter','sugar', 'Chocolatcream']

result = myfunction(products, 'chocolate')

print(result)

但请记住。这将搜索匹配字符串中除字符串中最后一个字母之外的所有字符。这可能导致res = myfunction(products,'VAJ')中的潜在问题,因为该函数将查找子串va的出现。因此,字面上任何包含va的字符串都会被无意中返回。致电

时,系统会退回['MogyoroVAJ', 'valami', 'vajaskenyer']
products = ['Csokolade', 'MogyoroVAJ', 'valami', 'ize', 'kutyakaja', 'vajaskenyer']

result = myfunction(products, 'VAJ') using the above modified code.

答案 1 :(得分:0)

列表理解可用于执行此操作,如下所示:

def myfunction(products, search):
    return [product for product in products if search.lower() in product.lower()]

products = ['Chocolat', 'peanutbutter', 'sugar', 'Chocolatcream']
print myfunction(products, 'chocolat')

products = ['Csokolade', 'MogyoroVAJ', 'valami', 'ize', 'kutyakaja', 'vajaskenyer']
print myfunction(products,'VAJ')    

这会显示:

['Chocolat', 'Chocolatcream']
['MogyoroVAJ', 'vajaskenyer']