I have a very large list Suppose I do that (yeah, I know the code is very unpythonic, but for the example\'s sake..):
n = (2**32)**2
for i in xrange(10**7)
In your first example you are storing the same integer len(arr) times. So python need just store the integer once in memory and refers to it len(arr) times.
In your second example, you are storing len(arr) different integers. Now python must allocate storage for len(arr) integers and refer to to them in each of the len(arr) slots.