如何将生成器类型转换为字符串?



我有一个简单的for循环:

def my_function(myList):
for x in myList:
yield x
y = my_function(my_list)

x作为以下函数的输入:

def my_second_function(y):
print(y.rfind("name")

但是我得到了错误:

AttributeError: 'generator' object has no attribute 'rfind'.

x不是生成器,而从for循环生成的函数是生成器!

>>> def my_function():
...     for x in my_list:
...         yield x
...
>>> type(my_function)
<class 'function'>
>>> type(my_function())
<class 'generator'>
>>> my_list = [1,2,3]
>>> next(my_function())
1

为了使结果成为字符串,您可能只是想在x出现之前或之后调用str()!

如果您想把整个生成器的内容放在一起,您需要将它们全部弹出(而不仅仅是第一个或N个值),可能使用字符串方法.join()

对其进行迭代。一起

>>> ",".join(str(a) for a in my_function())
'1,2,3'

(注意这里.join()实际上是","的方法)

最新更新