I am newbie who can explain this code to me?
Nobody
nobody at nowhere.invalid
Tue Sep 20 15:28:02 EDT 2016
More information about the Python-list mailing list
Tue Sep 20 15:28:02 EDT 2016
- Previous message (by thread): I am newbie who can explain this code to me?
- Next message (by thread): I am newbie who can explain this code to me?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, 20 Sep 2016 15:12:39 +0200, Peter Otten wrote: > because they don't build lists only to throw them away. The lists could have been avoided by using iterators, e.g. import itertools as it keys = xrange(256) vals = it.imap(chr, keys) max(it.imap(operator.setitem, it.repeat(d), keys, vals)) > Also, creating a list of dicts or lists is a common gotcha because after > > outer = [[]] * 3 > > the outer list contains *the* *same* list three times, not three empty > lists. But in this case, it's not a gotcha; it's intentional that each iteration operates upon the same dictionary. Essentially, [d]*len(keys) is a trick to get around the fact that map() requires all of the arguments (apart from the function) to be sequences. itertools.repeat() is possibly a better trick, although then you can't use map(), because map() iterates until *all* sequences are exhausted, appending None values for shorter sequences. itertools.imap() terminates once the shortest sequence is exhausted. In this specific case, a loop or comprehension would have been better. But in situations where you don't control the iteration, the ability to coerce something into a pre-determined iteration pattern is useful.
- Previous message (by thread): I am newbie who can explain this code to me?
- Next message (by thread): I am newbie who can explain this code to me?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list