Можно ли метод join использовать со строками?

Прочитал на многих сайтах про метод join, что он используется со списками и является обратным методу split. Но со split понятно, что он не разрывно связан со списками, а вот можно ли join применять к строкам, а не к спискам?


Ответы (1 шт):

Автор решения: gil9red

Можно:

print('-'.join("123"))
# '1-2-3'

PS.

Метод str.join работает с итерируемые объектами (списки, кортежи, словари, и т.п.), поэтому ему важно только то, чтобы объект, который ему передают мог итерироваться, например генератор:

def foo():
    yield "1"
    yield "2"
    yield "3"

print('-'.join(foo()))
# 1-2-3

Пример реализации итерирования у пользовательского класса:

class Foo:
    def __init__(self, max_value):
        self.max_value = max_value

    def __iter__(self):
        self.i = 0
        return self

    def __next__(self):
        if self.i >= self.max_value:
            raise StopIteration()
        self.i += 1
        return str(self.i)

print('-'.join(Foo(3)))
# 1-2-3
→ Ссылка