Проблем с nested lists Python
Кода е следния: l_block = list([[1]*5]*5) #инициализирам масив от 2д масив от 5 реда с 5 елемента със стойности print(l_block) l_block[0][3] = 2 #задавам (уш) стойност за елемент от първи ред 3 елемент print(l_block) print(l_block[0][3]) print(l_block[1][3]) l_block[1][3] = 1 #tova pokazva adresite na pametite print (hex(id(l_block[0][3]))) print (hex(id(l_block[1][3])))
output:
[[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]
[[1, 1, 1, 2, 1], [1, 1, 1, 2, 1], [1, 1, 1, 2, 1], [1, 1, 1, 2, 1], [1, 1, 1, 2, 1]]
2
2
0x8a87c0
0x8a87c0
Уш задавам стойност за един елемент а се пълнят всичките , след проверка се вижда че 2-та елемента имат един и същ адрес памет , тоест са една и съща променлива?! Пък уш са са различни листи ?! Не разбирам ?! и Друг въпрос: ако греша в синтаксиса как е правилния синтаксис?
то е ясно , че е така и аз го виждам , просто .. явно няма автоматизиран синтаксис който да ти напълни листите с различни пойнтъри
а това според теб какво е :Д баси поне четете какво ви отговаряме е хора или поне в стаковърфлоу :Д има още поне дузина начина по който мога да се сетя да го направя. А дори python не ми е основния език а по-скоро хоби.
output
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
[[0, 1, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
0x8a87a0
0x8a87c0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
0x8a87a0
Интересно пак е една памет а е възможно вкарването на нова променлива.