将输出更改为元组 [python]
Changing outputs into tuple [python]
def a_function(n, a, b, c):
if n == 1:
print((a,b))
else:
a_function(n-1, a, c, b)
print((a,b))
a_function(n-1, c, b, a)
a_function(3, 1, 2, 3)
如何使函数 return 元组而不是上面的输出?
(类似于:((1, 2), (1, 3), (2, 3), (1, 2), (3, 1), (3, 2), (1, 2 )))
您可以 return 一个元组的元组,并在 return 从递归调用中继续连接它们。例子-
def a_function(n, a, b, c):
if n == 1:
return ((a,b),)
else:
x = a_function(n-1, a, c, b)
return x + ((a,b),) + a_function(n-1, c, b, a)
演示 -
>>> def a_function(n, a, b, c):
... if n == 1:
... return ((a,b),)
... else:
... x = a_function(n-1, a, c, b)
... return x + ((a,b),) + a_function(n-1, c, b, a)
...
...
>>> a_function(3, 1, 2, 3)
((1, 2), (1, 3), (2, 3), (1, 2), (3, 1), (3, 2), (1, 2))
您可以使用 yield
:
def gx(n, a, b, c):
if n == 1:
yield a, b
else:
for sub in gx(n - 1, a, c, b):
yield sub
yield a, b
for sub in gx(n - 1, c, b, a):
yield sub
print tuple(gx(3, 1, 2, 3))
((1, 2), (1, 3), (2, 3), (1, 2), (3, 1), (3, 2), (1, 2))
尝试了另一种方法。
lis=[]
def a_function(n, a, b, c):
if n == 1:
lis.append((a,b))
else:
a_function(n-1, a, c, b)
lis.append((a,b))
a_function(n-1, c, b, a)
a_function(3, 1, 2, 3)
print tuple(lis)
def a_function(n, a, b, c):
if n == 1:
print((a,b))
else:
a_function(n-1, a, c, b)
print((a,b))
a_function(n-1, c, b, a)
a_function(3, 1, 2, 3)
如何使函数 return 元组而不是上面的输出?
(类似于:((1, 2), (1, 3), (2, 3), (1, 2), (3, 1), (3, 2), (1, 2 )))
您可以 return 一个元组的元组,并在 return 从递归调用中继续连接它们。例子-
def a_function(n, a, b, c):
if n == 1:
return ((a,b),)
else:
x = a_function(n-1, a, c, b)
return x + ((a,b),) + a_function(n-1, c, b, a)
演示 -
>>> def a_function(n, a, b, c):
... if n == 1:
... return ((a,b),)
... else:
... x = a_function(n-1, a, c, b)
... return x + ((a,b),) + a_function(n-1, c, b, a)
...
...
>>> a_function(3, 1, 2, 3)
((1, 2), (1, 3), (2, 3), (1, 2), (3, 1), (3, 2), (1, 2))
您可以使用 yield
:
def gx(n, a, b, c):
if n == 1:
yield a, b
else:
for sub in gx(n - 1, a, c, b):
yield sub
yield a, b
for sub in gx(n - 1, c, b, a):
yield sub
print tuple(gx(3, 1, 2, 3))
((1, 2), (1, 3), (2, 3), (1, 2), (3, 1), (3, 2), (1, 2))
尝试了另一种方法。
lis=[]
def a_function(n, a, b, c):
if n == 1:
lis.append((a,b))
else:
a_function(n-1, a, c, b)
lis.append((a,b))
a_function(n-1, c, b, a)
a_function(3, 1, 2, 3)
print tuple(lis)