On 2016-06-28, Tim Chase <python.l...@tim.thechases.com> wrote: > On 2016-06-29 01:20, Steven D'Aprano wrote: >> While loops are great for loops where you don't know how many >> iterations there will be but you do know that you want to keep >> going while some condition applies: >> >> while there is still work to be done: >> do some more work > > I find this particularly the case when the thing being iterated over > can be changed, such as a queue of things to process: > > items = deque() > items.append(root_node) > while items: > item = items.popleft() > process(item) > items.extend(item.children)
Yep, I often do something similar when processing a block of data bytes comprising a sequence of "things" of varying number of bytes. data = read_a_blob_of_bytes() while data: #figure out how long the first "thing" is len = <some expression typically involving the first few bytes of 'data'> handle_thing(data[:len]) data = data[len:] > But then, if you wrap up your "while" loop as a generator that yields > things, you can then use it in a "for" loop which seems to me like > the Pythonic way to do things. :-) Yea, I keep telling myself that, but I never actually do it. -- Grant Edwards grant.b.edwards Yow! How do I get HOME? at gmail.com -- https://mail.python.org/mailman/listinfo/python-list