Я попытаюсь объяснить на упрощенном примере.
simple_matrix = [[0,1,2],[3,4,5],[6,7,8]]
Следующий код печатает один элемент из этого списка списков:
print (simple_matrix[0])
Напечатанный элемент являетсясписок, это потому, что элемент с индексом 0 для simple_matrix only a list:
>>> [0,1,2]
Использование среза, как в следующем примере, возвращает not один элемент, но два .В этом случае проще ожидать, что список элементов будет возвращен, и это именно то, что мы видим как результат:
print (simple_matrix[0:2])
>>> [[0, 1, 2], [3, 4, 5]]
Что вас озадачивает, так это вывод:
print simple_matrix[0:1]
>>> [[0, 1, 2]]
Вы получаете этот вывод, потому что в этом случае вы получаете не один элемент из списка, как мы это делали в первом примере, а потому что вы нарезаете список списков.
Этот срез возвращает список, содержащий нарезанныйэлементы, в данном случае только список [0, 1, 2].