Оператор (str(x) for x in list)
называется генератором , выражением :
>>> (str(x) for x in [1,2,3])
<generator object <genexpr> at 0x7fc916f01d20>
. Он создает объект, который может быть повторен ровно один раз, и дает элементы, которые будутсоздан по одному.Вы можете выполнять итерацию по нему так же, как и по списку, например:
>>> gen = (str(x) for x in [1,2,3])
>>> for s in gen:
... print s
...
1
2
3
Генераторное выражение является итеративным, поэтому функция соединения выполняет итерацию по нему и объединяет его значения.