我需要将列表的每个值分配给一个变量。然后,我从另一个程序中调用该变量。
这是我的代码:
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个字符串(来自列表),可以在其他地方使用。
答案 0 :(得分:1)
在函数中使用yield时,您拥有的是生成器函数。
生成器功能与常规功能有些不同;它们在您调用它们时不会运行,而是返回一个生成器对象,它是迭代器的一种-您可以对其进行迭代,例如在for循环中。
要在函数中运行代码,您实际上需要遍历生成器对象。
一种简单的方法是在生成器对象上调用list
。
list(singleListSplitter(inputList))
但是,如果您不使用函数产生的值,则没有理由首先使用yield
,只需删除它即可,您将拥有一个常规函数来打印结果。