从lis中产生每个值

2024-10-05 14:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是我的密码:

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个字符串(来自列表),我可以在其他地方使用


Tags: in程序clean密码列表forvalueitem
1条回答
网友
1楼 · 发布于 2024-10-05 14:31:38

当你在函数中使用yield时,你得到的是一个生成函数

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

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

一种简单的方法是调用generator对象上的list

list(singleListSplitter(inputList))

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

相关问题 更多 >