Метод String join (), используемый с циклом for - PullRequest
0 голосов
/ 19 мая 2018

Мне нужна ваша помощь, потому что я не понимаю, почему можно использовать метод join() с циклом for в качестве аргумента.

Пример:

" ".join(str(x) for x in list)

Документация Python:

str.join(iterable) Возвращает строку, которая является конкатенацией строк в итерируемых.

A TypeError будет вызвано, если есть какие-либо нестроковые значенияв итерируемых, включая байтовые объекты.Разделителем между элементами является строка, обеспечивающая этот метод.

Может кто-нибудь объяснить, кто?

1 Ответ

0 голосов
/ 19 мая 2018

Оператор (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

Генераторное выражение является итеративным, поэтому функция соединения выполняет итерацию по нему и объединяет его значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...