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)