Кортежи неизменяемы и от них можно найти хеш, если они, конечно, сами не содержат изменяемых типов.
Из-за этого кортежи более легковесны, а возможность найти хеш позволяет использовать кортежи в виде ключей для словарей.
Например, можно хранить содержимое некоторых координат массива
d = {(0, 1): 'X', (2, 3): 'O'}
Теперь легко обойти все содержимое:
for x, y in d:
print(x, y, d[x, y])