Nested list problem - please...

Martin Hvidberg Martin at Hvidberg.net
Sat Apr 17 15:40:19 EDT 2010


Dear list

I have this code, it builds up a data structure of nested lists, and filling data in them.
My problem is that it seems that one of the lists SA[1] is not a list of unique instances but rather individual links to the same variable.
In the example below I assign 'X' to what I intended to be the first Compounds Name. But rather the 'X' goes into all the Compounds Name.
I thought that the [:] in SAdata.extend([CP[:]]) would ensure copies rather than links to.
What is going wrong?

I include sample code, and I include the output it produces, and I manually inserted some line breaks and some indents, for readability.

:-) Martin

--- Code Start ---
LV = list() # LV for Lable Value pair
LV.extend(['lable','0'])

CP = list() # CP for ComPund
for i in range(0,5):
    CP.extend([LV[:]]) # incl. 5 _copies_ of LV
CP[0][0] = 'Compound name'
CP[1][0] = 'Tgt'
CP[2][0] = 'Q1'
CP[3][0] = 'Q2'
CP[4][0] = 'Q3'

SA = list() # SA for SAmple
SAheader = list()
for i in range(0,3):
    SAheader.extend([LV[:]])
SAheader[0][0] = 'fileinfo.txt'
SAheader[1][0] = 'Data file'
SAheader[2][0] = 'Sample name'
SA.extend([SAheader])
SAdata = list()
for i in range(0,2):
    SAdata.extend([CP[:]]) 
SA.extend([SAdata])

print SA
SA[1][0][0][1] = 'X' 
print SA
--- Code End ---


[
	[
		['fileinfo.txt', '0'], 
		['Data file', '0'], 
		['Sample name', '0']
	], 
	[
		[
			['Compound name', 'X'], 
			['Tgt', '0'], 
			['Q1', '0'], 
			['Q2', '0'], 
			['Q3', '0']
		], 
		[
			['Compound name', 'X'], 
			['Tgt', '0'], 
			['Q1', '0'], 
			['Q2', '0'], 
			['Q3', '0']
		]
	]
]




More information about the Python-list mailing list