从函数返回多个输出

时间:2018-09-02 11:36:20

标签: python function return yield

我不确定是否可以,但是...

我正在尝试编写一个将输出数字列表的函数,以便可以将它们输入到另一个函数中。不过,我处于死胡同,因为returnyield(在此上下文中使用)都无法满足我的需求。

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)

即:

(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...

有什么办法可以做到这一点?

3 个答案:

答案 0 :(得分:0)

如果您想返回列表,可以这样做:

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))

答案 1 :(得分:0)

解决方案

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)

输出

(xenial)vash@localhost:~/python$ python3 text_seg.py 
(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)
(0, 15)
(1, 1)

评论

这种方法是否可以满足您的需求?您可以根据需要交换数字,但这将允许您将listtuples存储区分开,并能够将其调用到print

答案 2 :(得分:0)

您可以通过函数的参数返回列表,并使用函数的返回值指示建立的排列数:

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)