输出的代码为什么没有b?


sandwich_orders=['a','b','c']
finished_sandwiches=[]
for food in sandwich_orders:
    print("I made your "+food)
    finished_sandwiches.append(food)
    sandwich_orders.remove(food)

为什么输出:
I made your a
I made your c

在第一次执行循环时,取 sandwich_orders 的第 0个元素,food = 'a',循环中运行 sandwich_orders.remove(food),删除了 sandwich_orders 中的 'a',此时 sandwich_orders =['b', 'c']
下一次执行循环时,取 sandwich_orders 的第 1个元素,food = 'c'

你可以尝试:把 sandwich_orders.remove(food) 这句注释掉,就可以看看结果有什么不同。

你在循环中修改了列表,因为列表的可变属性,循环的时候最好用列表的复制版本sandwich_orders[:],然后在循环体内操作sandwich_orders.remove