On Mon, 5 Feb 2001, Greg Wilson wrote: > OK, now here's the hard one. Clearly, > > (a) for i in someList: > > has to continue to mean "iterate over the values". We've agreed > that: > > (b) for k:v in someDict: > > means "iterate through the items". (a) looks like a special case > of (b). I therefore asked my colleagues to guess what: > > (c) for x in someDict: > > did. They all said, "Iterates through the _values_ in the dict", > by analogy with (a). > > I then asked, "How do you iterate through the keys in a dict, or > the indices in a list?" They guessed: > > (d) for x: in someContainer: > > (note the colon trailing the iterator variable name). I think that > the combination of (a) and (b) implies (c), which leads in turn to > (d). Is this what we want? I gotta say, when I start thinking about > how many problems my students are going to bring me when accidentally > adding or removing a colon in the middle of a 'for' statement changes > the iteration space from keys to values, and I start feeling queasy... The PEP explicitly proposes that (c) be an error, because i anticipated and specifically wanted to avoid this ambiguity. Have you had a good look at it? I think your survey shows that the PEP made the right choices. That is, it supports the position that if 'for key:value' is supported, then 'for key:' and 'for :value' should be supported, but 'for x in dict:' should not. It also shows that 'for index:' should be supported on sequences, which the PEP suggests. -- ?!ng
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4