从列表中产生每个值

时间:2018-08-08 22:22:42

标签: 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 in inputList]

        #print clean_inputList

        for item in clean_inputList:
            yield item
            print item

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


singleListSplitter(inputList)

在运行脚本时,在控制台中没有显示yield的任何输出。 print可以正常工作。我需要更改以获得每个单独的值?

更新1

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

value = list(singleListSplitter(inputList))
print value

,并得到一个响应列表。

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

1 个答案:

答案 0 :(得分:1)

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

生成器功能与常规功能有些不同;它们在您调用它们时不会运行,而是返回一个生成器对象,它是迭代器的一种-您可以对其进行迭代,例如在for循环中。

要在函数中运行代码,您实际上需要遍历生成器对象。

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

list(singleListSplitter(inputList))

但是,如果您不使用函数产生的值,则没有理由首先使用yield,只需删除它即可,您将拥有一个常规函数来打印结果。