Строка обратного метода Python3.5.2

#python-3.x

#python-3.x

Вопрос:

 >>> x = "hello world"
>>> y = reversed(x)
>>> z = ''.join(y)
>>> z
'dlrow olleh'
>>> y
<reversed object at 0x7f2871248b38>
>>> ''.join(y)
''
>>> x
'hello world'
>>> ''.join(y)
''
>>> z = ''.join(y)
>>> z
''
  

Почему я получаю значение z в следующий раз как пустую строку после выполнения операции объединения в обратной функции

Комментарии:

1.Пожалуйста, прочтите документацию

Ответ №1:

Это потому, что reversed возвращает итератор, когда вы применяете к нему операцию, он «потребляет» элемент. Если вы хотите сохранить результат reversed в переменной, join — хороший способ сделать это.

 from collections.abc import Iterator

print(isinstance(reversed("hello world"), Iterator)) # True

it = reversed("hello world")
for x in it:
    print(x) # Prints the letters

for x in it:
    print(x) # Do not print them, there are already "consumed"
  

Комментарии:

1. Спасибо. Я совершенно забыл о возвращаемом объекте обратной функции, который является итератором

2. Да, босс! (поклон и приветствие) Вы абсолютно и недвусмысленно ответили на мой вопрос 🙂