Weird list behavior in python -


qtd_packs = 2 size_pack = 16 pasta = [] pasta.append ('packs/krun/') pasta.append ('packs/parting2/')  k in range(0, qtd_packs):     n in range(1, size_pack+1):         samples_in.append (pasta[k]+str(n)+'.wav')     samples.append(samples_in)     del samples_in[0:len(samples_in)]   print(samples) 

i'm trying add samples_in inside samples list, delete old samples_in list create new one. happen 2 times, qtd_packs =2. in end, 2 empty lists:

[[], []] 

i've append'ed samples_in inside samples before deleting it. happened?

thank you

in python, lists passed reference. when append samples_in samples, python appends reference samples_in samples. if want append copy of samples_in samples, can do:

samples.append(samples_in[:]) 

this creates new list items in samples_in , passes new list samples.append(). when clear items in samples_in, you're not clearing items in list appended samples well.

also, note samples_in[:] equivalent samples_in[0:len(samples_in)].


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -