It's because any iterable can be joined (e.g, list, tuple, dict, set), but its contents and the "joiner" must be strings.
'_'.join(['welcome', 'to', 'Edureka'])
'_'.join(('welcome', 'to', 'Edureka'))
Using something other than strings will raise the following error:
TypeError: sequence item 0: expected str instance, int found