You aren't slicing a list. This is a tuple. That's why slicing it returns a tuple.
frog2 isn't same as rest, because you are accessing only one element from
animal2 tuple - a string.
dog2 you are slicing tuple, which always return tuple, no matter if you want to get one element or 5 elements.
You can check type by using
animal2 = "cat", "dog", "frog"
cat2 = animal2[0:1]
dog2 = animal2[1:2]