所以我有这个代码:
animals = ['cat', 'dog', 'waffle', 'giraffe', 'turtle']
breakfeast_foods = ['waffle', 'pancake', 'eggs']
for index, item in enumerate(animals):
print item
if item in breakfeast_foods:
animals.pop(index)
由于某些原因,loop print语句没有打印“长颈鹿”。我不知道为什么,我遗漏了什么吗?在
Tags:
首先,这实际上是早餐而不是早餐。你打破(结束)的是禁食(没有食物),而不是盛宴(有很多食物)。在
但那只是我的学究作风:-)
现在,我们来谈谈实际问题。你不应该在列举列表的时候修改它(技术上,你可以这样做,但是你会得到你所看到的奇怪的结果)。在
这样做会扰乱用于枚举的内部结构。这是一个简化的解释(a),但它应该说明以下概念:
可以将枚举看作是使用索引逐步遍历
animals
中的每个元素。在当您到达索引2(waffle)并发现它在
breakfast_foods
中时,您将该索引处的项移除,然后将其他项随机移动,这样您就得到了:然后枚举转到索引3(现在是turtle),然后打印出来,在这个过程中跳过长颈鹿。在
无论如何,也许一种更具Python式的方法是:
^{pr2}$(a)在这里,Python的特定实现是否使用简单数组或其他数据结构并不重要。这个解释只是为了说明,在迭代数据结构的同时改变它常常会导致奇怪。在
相关问题 更多 >
编程相关推荐