从食物清单中删除非素食食物 通过使用Food对象列表 使用递归算法 只返回素食。
这是一个问题,但它让我感到困惑,因为它需要使用辅助功能。
有人可以向我解释一下吗?
(food.txt)中的食物清单如下:
onCreate()
答案 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