【问题标题】:How to convert generator type to string?如何将生成器类型转换为字符串?
【发布时间】:2021-11-05 11:32:19
【问题描述】:

我有一个简单的 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'.

【问题讨论】:

  • “转换”是什么意思?你到底想做什么?生成器函数旨在像 list(yourFunc())for val in yourFunc(): 一样使用。
  • my_list 中的元素类型是什么?您是指生成器函数中的循环吗?
  • my_list 包含字符串以及我想传递给其他函数作为输入并在它们上使用一些字符串方法的那些字符串。

标签: python python-2.7 for-loop generator yield


【解决方案1】:

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()实际上是","的方法)

【讨论】:

  • my_list 包含字符串以及我想传递给其他函数作为输入并在它们上使用一些字符串方法的那些字符串。
  • 你可能只是想迭代你的生成器(yields 在其中的函数)
  • 例如,我将不胜感激:)
  • 您必须在您的问题中添加更多内容!正如所写,它过于开放,无法提供更多帮助!
  • 希望现在更好:)
猜你喜欢
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 2022-08-18
  • 2019-09-10
  • 1970-01-01
  • 2019-01-21
  • 2016-12-30
  • 1970-01-01
相关资源
最近更新 更多