Hi Collin, > I think that I see the issue here. I believe this is a case of the > "prior knowledge summarization engine" being incorrect. Given this > statement: > > a += [var] > > it seems to think that a new copy of 'a' is being created. This is > incorrect. The given statement is equal to: > > operator.iadd(a, [var]) > > The Python documentation states that "For mutable targets such as > lists and dictionaries, the in-place method will perform the update, > so no subsequent assignment is necessary [2]."
OK, that explains it: - It explains why the '+= [item]' was nearly constant-time even on a list of length 1000. - It explains ChatGPT's failure: Probably there are more explanations regarding += on strings, on the web, than regarding += on lists. So ChatGPT used the "common" explanation, for strings, and then substituted s/string/list/. Thanks. Now I agree to converging on .append(..), because by my common measure "what is surprising to a naïve developer?" the '+= [item]' syntax has two negative scores: - It's surprising that += is optimized differently than +. - It's surprising that lists are optimized differently than strings. Bruno