我能重复你的问题的说明下面的代码
from itertools import cycle, dropwhile
direction = None
directions = ["NORTH", "EAST", "SOUTH", "WEST"]
cycled = cycle(directions)
current = dropwhile(lambda x: x != direction, cycled)
direction = next(current)
这是很难没有你的代码的其余部分的说法,而是由外观上来看,的direction
初始值不不存在于directions
列表中;意思是它既不NORTH
,SOUTH
,EAST
,或WEST
(区分大小写)。这导致一个无限迭代cycle
和dropwhile
如果你读了itertools
文档之间,dropwhile
作出这样的下降从迭代只要谓词是真实的元素的迭代器;之后,返回的每一个元素
首先,鉴于dropwhile
下降的元素,只要谓词是真实的,它最终会停止,一旦它到达一个假值,然后返回剩余的元素。其次,使用cycle生成重复迭代器
使迭代器从迭代器中返回元素并保存每个元素的副本。当迭代器耗尽时,从保存的副本中返回元素。不断地重复
由于direction
值不中directions
存在,dropwhile
正在通过无限长的迭代器,从不达到打破它
写再现您的问题 –
我只是调用这个方法的,好像在最后的陈述 – PapeK24
过程周期你是如何调用'rotate_left'一个完整的例子吗? – Wondercricket