Open vbrozik opened 3 years ago
Thanks for flagging this -- want to send in a pull-request to update that section?
Excuse my delayed reply. I am still learning Python a lot and in many cases I do not know what is the best way to perform certain task in the language. Also I am not sure if I know English good enough to contribute to an English book. So certainly I need a discussion first :)
Regarding the example above I would explain:
For large lists it could be inappropriate to create a new list to replace the old one because of memory requirements. In such cases the good solution is to modify the list in-place:
for i, _ in enumerate(a): a[i] += 3
PS: Originally I thought that the code below would be the right solution but as the original "good" solution it also creates a new list and only then it assigns its elements to the original list.
a[:] = (i + 3 for i in a)
See:
In the Code Style chapter examples - Short Ways to Manipulate Lists there is an example "Add three to all list members."
"bad"
"good"
Unfortunately the "bad" and "good" examples do a different things:
Although the "good" code looks cleaner the result could be unwanted for example in case of huge lists or required side-effect of modifying the original list. The code at least needs an explanation.