Today I am sharing a real time issue.
Currently i am working on reporting module. where to print a report of selled product i need to send product list in report file.
so, I am passing that product list like following.
product_list = [['product_1']*4]*4
Here, total sell of product_1 is 16, and in a one row of A4 size paper i want 4 product label.
so, this will give me like following result:
product_list = [['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1']]
In product_list[0][1] index i need to change 'product_1' to 'product_2'.
so, I wrote following code.
product_list[0][1] = 'product_2'
Here, i expected output is like following:
product_list = [['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1']]
But i got following result.
product_list = [['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_2', 'product_1', 'product_1']]
Do you see the problem, second element of all the list changed to 'product_2'.
So it means [['product_1']*4]*4 creates a list that contains reference to the same list ['product_1', 'product_2', 'product_1', 'product_1']
To avoid this we can write following code:
n,m = 4,4
product_list = []
for x in xrange(n):
product_list.append(['product_1'] * m)
print product_list
o/p : [['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1']]
product_list[0][1] = 'product_2'
print "After Update : ",product_list
After Update : [['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1']]
Currently i am working on reporting module. where to print a report of selled product i need to send product list in report file.
so, I am passing that product list like following.
product_list = [['product_1']*4]*4
Here, total sell of product_1 is 16, and in a one row of A4 size paper i want 4 product label.
so, this will give me like following result:
product_list = [['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1']]
In product_list[0][1] index i need to change 'product_1' to 'product_2'.
so, I wrote following code.
product_list[0][1] = 'product_2'
Here, i expected output is like following:
product_list = [['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1']]
But i got following result.
product_list = [['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_2', 'product_1', 'product_1']]
Do you see the problem, second element of all the list changed to 'product_2'.
So it means [['product_1']*4]*4 creates a list that contains reference to the same list ['product_1', 'product_2', 'product_1', 'product_1']
To avoid this we can write following code:
n,m = 4,4
product_list = []
for x in xrange(n):
product_list.append(['product_1'] * m)
print product_list
o/p : [['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1']]
product_list[0][1] = 'product_2'
print "After Update : ",product_list
After Update : [['product_1', 'product_2', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1'],
['product_1', 'product_1', 'product_1', 'product_1']]