无法从python函数返回具有所需顺序的列表

2024-09-30 08:31:42 发布

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

想写一个代码,将添加到burgerlist的项目,我的顺序如下:burgerlist的第一个和最后一个元素应该是面包,第二个和前最后一个元素应该是蛋黄酱(如果它存在于调用函数的参数中),然后是牛肉/鸡肉,然后是蔬菜。 请帮助理解这里要改变什么

def my_odrer(*g):
    ingredients = [['long_bread', 'circle_bread'], ['mayonnaise', 'ketchup'], ['beef', 'chicken'],
                   ['cucumber', 'tomato', 'onion']]

    burgerlist = []
    for i in g:

        if i in ingredients[0]:
            burgerlist.insert(0, i)
        elif i in ingredients[1]:
            burgerlist.insert(1, i)
        elif i in ingredients[2]:
            burgerlist.append(i)
        elif i in ingredients[3]:
            burgerlist.append(i)

    if burgerlist[1] == 'mayonnaise':
        burgerlist.append(burgerlist[1])

    burgerlist.append(burgerlist[0])

    return burgerlist


print(my_odrer('circle_bread', 'beef', 'tomato', 'mayonnaise', 'ketchup'))

输出为:['circle_bread', 'ketchup', 'mayonnaise', 'beef', 'tomato', 'circle_bread']

但我想得到:['circle_bread', 'mayonnaise', 'ketchup', 'beef', 'tomato','mayonnaise', 'circle_bread']


Tags: in元素ifmyelifcircleappendbeef
2条回答

我在你最后的if语句中添加了一个附加条件之后,它就可以工作了。你知道吗

def my_odrer(*g):
ingredients = [['long_bread', 'circle_bread'], ['mayonnaise', 'ketchup'], ['beef', 'chicken'],
               ['cucumber', 'tomato', 'onion']]

burgerlist = []
for i in g:

    if i in ingredients[0]:
        burgerlist.insert(0, i)
    elif i in ingredients[1]:
        burgerlist.insert(1, i)
    elif i in ingredients[2]:
        burgerlist.append(i)
    elif i in ingredients[3]:
        burgerlist.append(i)

if burgerlist[1] == 'mayonnaise':
    burgerlist.append(burgerlist[1])
elif burgerlist[2] == 'mayonnaise':
    burgerlist[1], burgerlist[2] = burgerlist[2], burgerlist[1]
    burgerlist.append(burgerlist[1])

burgerlist.append(burgerlist[0])

return burgerlist

创建3个列表,包含应该在开头、中间和结尾的成分。然后连接它们以产生最终结果。你知道吗

def my_odrer(*g):
    breads = {'long_bread', 'circle_bread'}
    condiments = {'ketchup'} # mayonnaise not included, since it's handled specially
    meats = {'beef', 'chicken'}
    vegetables = {'cucumber', 'tomato', 'onion'}

    beginning = []
    middle = []
    end = []

    for item in g:
        if item in breads:
            beginning.append(item)
            end.append(item)

    if "mayonnaise" in g:
        beginning.append("mayonnaise")
        end.insert(-1, "mayonnaise")

    for item in g:
        if item in condiments:
            middle.append(item)
    for item in g:
        if item in meats:
            middle.append(item)
    for item in g:
        if item in vegetables:
            middle.append(item)

    return beginning + middle + end

相关问题 更多 >

    热门问题