如何在python中从循环返回数据

如何在python中从循环返回数据,python,python-3.x,list,return,Python,Python 3.x,List,Return,我有一个循环 y = [1,2,3,4,5,6,7] for x in y: if x == 3: return(x) elif x == 4: return(x) elif x = 6: return(x) else: return('not found') 我不想打印数据,我只想返回数据,如果数据被返回,有没有一种方法可以一次处理列表中所有返回的数据?首先,您有一个语法错误: y = [1,2,3,4

我有一个循环

y = [1,2,3,4,5,6,7]

for x in y:
    if x == 3:
       return(x)
    elif x == 4:
       return(x)
    elif x = 6:
       return(x)
    else:
       return('not found')

我不想打印数据,我只想返回数据,如果数据被返回,有没有一种方法可以一次处理列表中所有返回的数据?

首先,您有一个语法错误:
y = [1,2,3,4,5,6,7]

result = []
for x in y:
    if x == 3:
        result.append(x)
    elif x == 4:
        result.append(x)
    elif x == 6:
        result.append(x)
    else:
        # or pass if you want to ignore
        result.append(None)
return result
它应该是
elif x==6:
,因为
=
是赋值运算符,
==
是比较运算符,您正在尝试比较,而不是赋值

接下来,需要将
for
循环放入函数中,以便
返回值<代码>返回
只能在函数内部使用。否则,它将返回语法错误。因此,制作一个函数并在其中插入
for
循环,如下所示:

def function (y):
    for x in y:
        if x in {3,4,6}:
           return (x)
        else:
           return ('not found')
然后,您需要调用
y
上的函数。像这样:

function(y)
def function (y):
    emptyList = []
    for x in y:
        if x in {3,4,6}:
           emptyList.append(x)
        else:
           emptyList.append("not found")
    return emptyList
不清楚您所说的“按列表一次处理所有返回的数据”是什么意思。无论如何,如果您的意思是要将所有返回的数据存储在一个列表中,那么创建一个空列表,并将
函数的每个返回值附加到空列表中。像这样:

function(y)
def function (y):
    emptyList = []
    for x in y:
        if x in {3,4,6}:
           emptyList.append(x)
        else:
           emptyList.append("not found")
    return emptyList

如果你能提供一个更清晰的问题,我会根据你的需要进行编辑

如果我理解正确,您有一个数字列表,希望将某些值返回到单独的列表中[3、4、6]应该在单独的列表中。我假设您不希望从原始列表中删除这些值(使用remove方法),但希望将它们保留在原始列表中,并将它们添加到另一个列表中。以下是一个例子:

y = [1, 2, 3, 4, 5, 6, 7]

z = []

for x in y:
     if x == 3:
          z.append(x)

     if x == 4:
          z.append(x)

     if x == 6:
          z.append(x)
一,。我们创建存储一系列数字的y列表。 2.我们创建一个空列表,用于存储您希望存储在单独列表中的值。 3.我们开始for循环。当我们迭代列表中的每个值时,x将是列表中每个数字的变量,y是您的列表。 4.如果值==3,我们可以附加到空列表,以便将该特定值存储在列表中,而不是返回。我们将为您想要在单独列表中的每个值运行if语句,并将该值附加到新列表中。
5.结果是得到z=[3,4,6],这是一个新列表,其中包含要存储在新列表中的原始列表中的值

下面的代码将为上述问题提供解决方案

通解 上述问题的解决方案:
最简单的方法是创建一个空列表
result=[]
,然后
result.append(x)
而不是
return x
,然后在整个循环之后,
return result
。没有任何代码封装在函数中,因此返回在这里没有多大意义。事实上,您的代码不会运行,因为您在函数外部返回。最惯用的方法是
生成x
。这并没有给你一个列表,但它给了你,几乎像魔术一样,一种不同类型的iterable,可以像列表一样用在很多方面。在你准备好学习生成器和迭代器之前不要使用它,但一旦你准备好了,你就会开始到处使用它。我强烈建议你去看看,因为这不是一个正确的使用它的方法。可能是你在寻找像
result=[x if x in{3,4,6}或者“not found”for x in y]
此代码的语法无效,无法运行。另外,带有代码的答案,加上解释,质量更高。不使用函数如何返回?我假设示例代码在函数中。问题中的代码使用了
返回
,对吗?即使这是在函数中,它的语法也不好。@BOi就像我说的,我假设它是在函数中。你几乎肯定想让
空列表
成为一个局部变量,而不是每次调用这个函数时都要附加的全局变量。如果x在函数中,你应该只使用
{3,4,6}
,而不是有3个如果。@abarnert我已经编辑过,使emptyList成为本地的variable@BOi使用集合而不是列表。平均查找
O(1)
vs
O(n)
@jah知道OP的for循环也会这样做。它读取第一个值1并返回“未找到”。OP只是问如何返回数据而不是打印,以及他如何处理列表中的返回值。这就是为什么我将他的for循环放入一个函数中。他没有问函数是否在逻辑上工作。我不知道他的程序的目标,所以我没有试图弄乱它。