[Python-Dev] More data points (original) (raw)
ncoghlan at iinet.net.au ncoghlan at iinet.net.au
Sun Sep 26 07:28:28 CEST 2004
- Previous message: [Python-Dev] More data points
- Next message: [Python-Dev] More data points
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Quoting Raymond Hettinger <python at rcn.com>:
To help with get a comprehensive view when I look at this more closely tomorrow, can you try out variations on the theme with other mutables:
myset.update deque.extend dict.update dict.fromkeys array.extend
Returning to Tim's original infinite loop, the behaviour is interestingly variable.
List and array go into the infinite loop. Deque and dictionary both detect that the loop variable has been mutated and throw a specific exception. Set throws the same exception as dictionary does (presumably, the main container inside 'set' is a dictionary)
Details of behaviour:
Python 2.4a3 (#16, Sep 21 2004, 17:33:57) [GCC 3.4.1 20040702 (Red Hat Linux 3.4.1-2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. X>> x = [1] X>> x.extend(-y for y in x) Traceback (most recent call last): File "", line 1, in ? File "", line 1, in KeyboardInterrupt X>> len(x) 73727215 X>> x = set([1]) X>> x set([1]) X>> x.update(-y for y in x) Traceback (most recent call last): File "", line 1, in ? File "", line 1, in RuntimeError: dictionary changed size during iteration X>> x set([1, -1]) X>> from collections import deque X>> x = deque([1]) X>> x.extend(-y for y in x) Traceback (most recent call last): File "", line 1, in ? File "", line 1, in RuntimeError: deque changed size during iteration X>> x deque([1, -1]) X>> from array import array X>> x = array('b', '1') X>> x.extend(-y for y in x) Traceback (most recent call last): File "", line 1, in ? File "", line 1, in KeyboardInterrupt X>> len(x) 6327343 X>> x = dict.fromkeys([1]) X>> x {1: None} X>> x.update((-y, None) for y in x) Traceback (most recent call last): File "", line 1, in ? File "", line 1, in RuntimeError: dictionary changed size during iteration X>> x {1: None, -1: None} X>> x.fromkeys(-y for y in x) {-1: None}
- Previous message: [Python-Dev] More data points
- Next message: [Python-Dev] More data points
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]