怎么办我从python循环中返回数据

时间:2018-03-12 03:57:38

标签: 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')

我不想打印数据,我只想返回数据,如果数据被返回,有没有办法一次性处理所有这些返回的数据?

4 个答案:

答案 0 :(得分:0)

首先,您遇到语法错误: 它应该是elif x == 6:,因为=是赋值运算符,而==是比较运算符,而您正在尝试比较,而不是分配。

接下来,您需要将for循环放在函数中,以便return一个值。 return只能在函数内部使用。否则,它返回语法错误。因此,创建一个函数并在其中插入for循环:

def function (y):
    for x in y:
        if x in {3,4,6}:
           return (x)
        else:
           return ('not found')

然后,您需要在y上调用该函数。像这样:

function(y)

目前还不清楚“将所有此类返回数据一次处理为列表”的含义。无论如何,如果您想要将所有返回的数据存储在列表中,则创建一个空列表并将每个返回值function附加到空列表中。像这样:

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

如果您能提供更清晰的问题,我会根据您的需求进行编辑!

答案 1 :(得分:0)

如果我理解正确,你有一个数字列表,并希望将某些值返回到单独的列表[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)

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

答案 2 :(得分:0)

以下代码将为上述问题提供解决方案......

通用解决方案

def createGenerator(new_list, comp_list):
   for i in new_list:
       if i in comp_list:
           yield i

comp_list = [4,5,6]
new_list = range(10)  # Written for generic (can pass any list here )
mygenerator = createGenerator(new_list, comp_list)
for i in mygenerator:
    print i
4
5
6

以上解决方案:

def createGenerator(y):
   for i in y:
       if i in [4,5,6]:
           yield i
y = range(10)
mygenerator = createGenerator(y)
for i in mygenerator:
    print i
output:
4
5
6

答案 3 :(得分:-2)

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