Python 从函数返回多个输出

Python 从函数返回多个输出,python,function,return,yield,Python,Function,Return,Yield,我不确定这是否可能,但是 我正在尝试编写一个函数,该函数将输出数字列表,以便可以将它们输入到另一个函数中。不过我已经走到了死胡同,因为无论是return还是yield(在本文中使用)都不能满足我的需求 def ITERATOR(): for number in range(1,3): for item in itertools.permutations(range(15),number): yield item 显然,只要使用return,函数就

我不确定这是否可能,但是

我正在尝试编写一个函数,该函数将输出数字列表,以便可以将它们输入到另一个函数中。不过我已经走到了死胡同,因为无论是
return
还是
yield
(在本文中使用)都不能满足我的需求

def ITERATOR():
    for number in range(1,3):
        for item in itertools.permutations(range(15),number):
            yield item
显然,只要使用
return
,函数就会中断,
yield
立即返回所有内容。理想情况下,我希望它输出的是每行上打印的内容:

def ITERATOR():
    for number in range(2,4):
        for item in itertools.permutations(range(15),number):
            print(item)
i、 e:

(0, 1)
(0, 2)
(0, 3)
(0, 4)
(0, 5)
(0, 6)
(0, 7)
(0, 8)
(0, 9)
(0, 10)
(0, 11)
(0, 12)
(0, 13)
(0, 14)
etc...

有什么方法可以实现这一点吗?

如果您想返回列表,您可以执行以下操作:

def fct():
    return [item for item in itertools.permutations(range(15),number) for number in range(2,4)]
还有发电机

def fct():
    return (item for item in itertools.permutations(range(15),number) for number in range(2,4))

解决方案

new_tuples = []
for i in range(0, 5):
    for j in range(1, 16):
        new_tuples.append((i, j))

for i in new_tuples:
    print(i)
输出

评论


这种方法能满足您的需求吗?您可以根据需要交换数字,但这将允许您使用
元组
存储的
列表
,并能够调用它们以
打印
,您可以通过函数的参数返回列表,并使用函数的返回来指示创建的排列数:

import itertools

permut = []

def ITERATOR(item):
    n_permuts= 0
    for number in range(2,4):
        for item in itertools.permutations(range(15),number):
            permut.append(item)
            n_permuts+= 1
    return n_permuts

print (ITERATOR(permut))
for item in permut:
    print(item)

不要将
return
放入
for
循环中。它立即中断该功能。此外,所有的大写字母都应该用于全局变量名,而不是函数名:请参见“
yield
一次返回所有内容”-这完全不是它的功能。请澄清具体问题;您试图如何使用该函数?
yield
将生成器返回到它返回的值,您可以根据需要使用此生成器。您不必一次接受所有值,只需对其进行迭代即可。我有另一个函数,它在向其传递数字列表(或元组)时输出。我想通过这些(0,1),(0,2)等等。。。我想单独谈谈。现在我想了想,有没有可能做到:对于itertools.permutations(范围(15),数字):functionTwo(项目)?只是对您的陈述进行一些更正:“返回或‘屈服’(在本文中使用)都不能满足我的要求”-两者都可以满足您的要求,但您必须了解它们是如何工作的。“收益率一次就能回报一切”——它绝对不会。
import itertools

permut = []

def ITERATOR(item):
    n_permuts= 0
    for number in range(2,4):
        for item in itertools.permutations(range(15),number):
            permut.append(item)
            n_permuts+= 1
    return n_permuts

print (ITERATOR(permut))
for item in permut:
    print(item)