从函数返回多个输出

问题描述 投票:0回答:3

我不确定这是可能的,但......

我正在尝试编写一个函数,它将输出数字列表,以便它们可以输入到另一个函数中。我虽然处于死胡同,因为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...

有没有办法实现这个目标?

python function return yield
3个回答
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))

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)

评论

这种方法会满足您的需求吗?您可以根据需要交换数字,但是,这将允许您与list商店有一个tuples,并能够将它们称为print


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)
© www.soinside.com 2019 - 2024. All rights reserved.