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个字符串(来自列表),我可以在其他地方使用。”。。。通过使用列表,您可以在其他地方使用这些。很难确切地理解你想要什么。