[issue33815] List a = []*19 doesn't create a list with index length of 19

2018-06-09 Thread Varada


New submission from Varada :

Hi,
As per my understanding, 
a = [0]*19 -> creates a list of length 19 with all zeros,

>>> a = [0]*19
>>> print (len(a))
19
>>> a [18] = 2
>>> print (a)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]
>>>

In the similar way, 
>>> a = []*19 --> Must create a blank list with length 19. 
That is eventhough the contents of the list would be blank or null, I would at 
least expect the length of the list must 19 and the index must have got memory 
allocated so I can access it later ?

Otherwise, if a = []*19 is going to return length as 0, and it's index cannot 
be accessed then what difference does it have with a = []. Aren't they the same 
? There should be some significance of using a = []*19 compared to a = []. They 
cant the the same, can they ?

>>> a = []*19
>>> a [18] = 2
Traceback (most recent call last):
  File "", line 1, in 
IndexError: list assignment index out of range
>>> print (len(a))
0
>>>
>>> b = []
>>> print (len(b))
0
>>> b [18] = 2
Traceback (most recent call last):
  File "", line 1, in 
IndexError: list assignment index out of range
>>>

-
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit 
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

--
components: Windows
messages: 319163
nosy: paul.moore, steve.dower, tim.golden, varada86, zach.ware
priority: normal
severity: normal
status: open
title: List a = []*19 doesn't create a list with index length of 19
type: behavior
versions: Python 3.6

___
Python tracker 
<https://bugs.python.org/issue33815>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue33815] List a = []*19 doesn't create a list with index length of 19

2018-06-09 Thread Varada


Varada  added the comment:

Hi, Eric & Zach,

Thanks for your kind response. 

@Eric, from your comments am I to understand that you agree with me or state 
that my understanding is wrong ? :) I couldn't conclude it. 

The point where I find difficult to convince myself is why am I not able to 
access a[18] when I have already kind of declared it like a = []*19.

Is that really an expected behavior.

I agree with Zak, that nothing * anything = nothing. But, in that case why we 
even allow that command to work. 

It leads us think that it will create an empty list 19 times whereas it 
actually doesn't. It's kind of misleading don't you think. 

Many Thanks in advance Eric and Zak for your time on this,

--

___
Python tracker 
<https://bugs.python.org/issue33815>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com