Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表中产生每个值_Python_Python 2.7 - Fatal编程技术网

Python 从列表中产生每个值

Python 从列表中产生每个值,python,python-2.7,Python,Python 2.7,我需要将列表中的每个值赋给一个变量。然后我从另一个程序调用该变量 这是我的代码: inputList = """["vanilla","vanillas","vanill","vanil","vanila"]""" def singleListSplitter(inputText): try: inputList = ast.literal_eval(inputText) clean_inputList = [item.strip() for item

我需要将列表中的每个值赋给一个变量。然后我从另一个程序调用该变量

这是我的代码:

inputList = """["vanilla","vanillas","vanill","vanil","vanila"]"""

def singleListSplitter(inputText):
    try:
        inputList = ast.literal_eval(inputText)
        clean_inputList = [item.strip() for item in inputList]

        #print clean_inputList

        for item in clean_inputList:
            yield item
            print item

    except Exception as e:
        print "Error: ",e


singleListSplitter(inputList)
在运行脚本时,我在控制台中看不到任何带有
yield
的输出。
打印
按预期工作。我需要更改什么才能获得每个单独的值

更新1

根据评论和回复,我尝试:

value = list(singleListSplitter(inputList))
print value
并得到了一份清单作为回应


这里我真正想要的是5个字符串(从列表中),我可以在其他地方使用。

当在函数中使用yield时,您拥有的是一个生成器函数

生成器函数与常规函数稍有不同;当您调用它们时,它们不会运行,而是返回一个generator对象,这是一种迭代器类型,您可以对其进行迭代,例如在for循环中

要在函数中运行代码,您需要实际迭代生成器对象

一种简单的方法是在生成器对象上调用
list

list(singleListSplitter(inputList))


但是,如果您没有使用函数生成的值,那么首先就没有理由使用
yield
,您只需删除它,您就可以使用一个常规函数来打印结果。

您的最后一行代码将返回一个生成器,它不应该打印列表中的任何内容。你能展示一下你是如何遍历列表的吗?当我遍历你的生成器时,我得到了项目和print语句。是的,上面的匿名用户是对的。生成器是惰性评估的一个例子(谷歌it,它在任何语言中都很有用)。它不像列表那样“保存”值,而是在请求下一个元素时“生成”它们。即使它有一个列表(clen_inputList)作为支持,它仍然不会公开值,除非特别要求这样做。我猜@jbch的建议答案解决了您的问题,您“得到了一个列表响应”,您可以在其中找到值。此外,为什么不首先返回干净的输入列表?如果稍后调用list(),这里不需要生成器。“我真正想要的是5个字符串(来自列表),我可以在其他地方使用。”。。。通过使用列表,您可以在其他地方使用这些。很难确切地理解你想要什么。