>> немного вымораживают конструкции типа "\n".join (array)
Ты, как и многие ее неверно воспринимаешь.
Она выглядит так:
"\n".join (iterable)
То есть работает с любой итерируемой сущностью, любой. Возможно, ее надо было сделать функцией "join", но так как строка для склейки необходимый элемент, то ее присобачили к строкам. Это проще, чем к каждому контейнеру добавлять метод join, чтобы он умел себя объединять. Обобщенного класса BaseIterator ведь нет, наподобие basestring. Короче, это сугубо питонье решение: как удобно, а не как абстрактно правильно.