Почему элементы оказались связанными?
Да, можно даже сказать в каком-то смысле, что в Python все передается по ссылке. Но вот типы данных делятся на mutable и immutable. Списки изменяемы, а числа нет. 
Задать массивы можно специальным синтаксисом − списковыми включениями (list comprehension):matrix = [[0]*10 for x in range(10)]
Списки хранят ссылки на объекты в памяти, а не сами объекты.
В первой строчке вы создали список из 10 ссылок на один объект списка.
Потом поменяли список на который была ссылка.
Соответственно, по остальным ссылкам стало видно измененный объект
Точки с запятой не нужны.
Еще до кучи:
Синтаксис [object] * 10 делает список из 10 ссылок на один и тот же объект
[object for x in range(10)] - список со ссылками на 10 разных объектов>>> a = [1, 2, 3]
>>> b = a
>>> a[1] = 0
>>> b
[1, 0, 3]