#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. Да, босс! (поклон и приветствие) Вы абсолютно и недвусмысленно ответили на мой вопрос 🙂