From the book \'Programming in Scala\' by Martin Odersky:
Another useful container object is the tuple. Like lists, tuples are immutable, but unlike lis
In very short:
With a list, you cannot require that the first element must be a string, and the second, a number. With a tuple, you can, and the compiler will statically check that.
What follows is that you can have a list of an arbitrary length, because all elements are alike, but a tuple can be only of a fixed length, with the type of each element declared separately.
If you come from e.g. C background, tuples are like structs, and lists are like arrays.