我有一个简单的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()
实际上是","
的方法)