Есть большой список (list) из елементов. Я всегда его очищал так -
List = []
List[:] = []
List = []
List[:] = []
alexeyvanzhula
Обясните пожалуйста в чом разница
Есть большой список (list) из елементов. Я всегда его очищал так - List =
Но с недавних пор в нете увидел что удаляют так - List =
Не могу вехать в чем разница. По расходу памяти проверял - вроди разнецы нет…
a=5 l1=[a]*5 l2=l1 l1[:]=[] print l2 ### a=5 l1=[a]*5 l2=l1 l1=[] print l2
[] [5, 5, 5, 5, 5]
l2=l1
l2=l1[:]
alexeyvanzhula
то есть обычные переменные например int, при присваивании знаком ‘=’ работают как ссылка - a=b
а список -- как копия? Тогда зачем писатьl2=l1- если мы хотим копию списка, а не ссылку на него?l2=l1[:]
l=[1,2,3,4,5] l2=l # ССЫЛКА l[0]=9 print l2 l=[1,2,3,4,5] l2=l[:] # КОПИЯ l[0]=9 print l2
[9, 2, 3, 4, 5] [1, 2, 3, 4, 5]
FishHookalexeyvanzhula
то есть обычные переменные например int, при присваивании знаком ‘=’ работают как ссылка - a=b
а список -- как копия? Тогда зачем писатьl2=l1- если мы хотим копию списка, а не ссылку на него?l2=l1[:]l=[1,2,3,4,5] l2=l # ССЫЛКА l[0]=9 print l2 l=[1,2,3,4,5] l2=l[:] # КОПИЯ l[0]=9 print l2[9, 2, 3, 4, 5] [1, 2, 3, 4, 5]
l1[:]=[]
alexeyvanzhulaДа нет же.
Слева судя синтаксису питона создаеться копия которой сразу же присваиваеться пустота
l=[1,2,3,4,5] l=[]
l=[1,2,3,4,5] l[:]=[]
l=[1,2,3,4,5] l[ 0 : 5 ]=[3,60,30,20,10]
List[ : ]
List[ 0 : len(List) ]
>>> l=[1,2,3,4,5,6,7,8,9,10] >>> l [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> l[3:4]=[100,100,100,100] >>> l [1, 2, 3, 100, 100, 100, 100, 5, 6, 7, 8, 9, 10] >>>
l[ : ]=[]