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




Reply via email to