从食物清单中删除非素食食物。

时间:2016-03-04 08:55:51

标签: python recursion

从食物清单中删除非素食食物 通过使用Food对象列表 使用递归算法 只返回素食。

这是一个问题,但它让我感到困惑,因为它需要使用辅助功能。

有人可以向我解释一下吗?

(food.txt)中的食物清单如下:

onCreate()

3 个答案:

答案 0 :(得分:0)

当它说使用递归时,它意味着你应该从函数定义中调用函数。例如,为了帮助您入门:

def recurse(inputs_list):
    if('b' in inputs_list):
        inputs_list.remove('b')
        return recurse(inputs_list)
    return inputs_list


inputs =['a', 'b', 'c', 'b', 'c', 'd', 'e', 'b', 'e', 'f', 'b']

print recurse(inputs)

输出:

>>['a', 'c', 'c', 'd', 'e', 'e', 'f']

您使用递归,因为.remove()会删除与搜索字符串匹配的第一个元素。

答案 1 :(得分:0)

假设list,您可以使用recursion

>>> foods = ['Spicy Vegetable Moo Shu|1|True|140', 'BBQ Pork|1|False|920', 'Chicken Breast|1|False|920', 'Salad|1|True|920']
>>> def veggie_r_ip(foods):
...         for f in foods:
...             is_veggie = f.split('|')[2]
...             if is_veggie == 'False':
...                 foods.remove(f)
...                 veggie_r_ip(foods)
...         return foods
... 
>>> veggie_r_ip(foods)
['Spicy Vegetable Moo Shu|1|True|140', 'Salad|1|True|920']

答案 2 :(得分:0)

def veggie_r_ip(foods, curIndex):
    if(curIndex >= len(foods)):
        return
    curFood = foods[curIndex]
    is_veggie = curFood.split('|')[2]
    if is_veggie == "False":
        foods.remove(curFood)
        veggie_r_ip(foods, curIndex)
    else:
        veggie_r_ip(foods, curIndex + 1)

def main():
    foods =['Spicy Vegetable Moo Shu|1|True|140', 'BBQ Pork|1|False|920', 'Chicken Breast|1|False|920', 'Salad|1|True|920']
    veggie_r_ip(foods, 0)
    print foods