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

2024-04-29 04:54:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用Python编写一个函数,它需要两个参数:一个列表和一个字符串。函数必须返回列表中存在的那些产品的列表。 举个例子:

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']

我不知道如何才能解决它,我尝试了许多不同的解决方案,但每次都有一些不同的问题。你知道吗

提前谢谢!你知道吗


Tags: 函数in列表forelementproductlowerlist
2条回答

列表理解可用于执行以下操作:

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']
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.

相关问题 更多 >