Any other Python flaws?
aleaxit at yahoo.com
Thu Jun 14 23:49:14 CEST 2001
"jcm" <grumble at usa.net> wrote in message
news:9gb6ap$p10$1 at news.mathworks.com...
> Edward C. Jones <edcjones at erols.com> wrote:
> > It follows from some basic concepts of Python that
> > "array = ( * 10) * 10"
> > does not behave as usually intended. This is a well-known "dark
> > corner" of Python; a place it is simply best to avoid.
> For this example, what would you say people would usually expect?
Presumably the same as
array = *100
but then, this *IS* what they get.
Maybe Edward meant
a = [*10]*10
with the "well-known dark corner" that now a[i] is a[j] for all i and
j in range(10), as opposed to, say,
a = [*10 for i in range(10)]
where the 'is' doesn't hold (except when i is j:-). But I'm not sure
why "it's simply best to avoid" the simple semantics that, for any
expression, [<expression>]*n gives me a list with n references to
the SAME object (result of just ONE evaluation of <expression>),
while [<expression> for i in range(n)] evaluates the expression n
separate times (whether that gives n references to the same object
being therefore strictly dependent on the expression).
More information about the Python-list