是否可以编写一个向嵌套循环添加更多for
循环的函数。所以我假设我有一个函数for_loops(3)
。
def for_loops(n):
a = []
for add_v in range(n):
a.append("AB")
for i in range(len(a[0])):
for j in range(len(a[1])):
for k in range(len(a[2])):
print(a[0][i]+" "+a[1][j]+" "+a[2][k])
for_loops(3)
然后for_loops(4)
def for_loops(n):
a = []
for add_v in range(n):
a.append("AB")
for i in range(len(a[0])):
for j in range(len(a[1])):
for k in range(len(a[2])):
for l in range(len(a[3])):
print(a[0][i]+" "+a[1][j]+" "+a[2][k]+" "+a[3][l])
for_loops(4)
答案 0 :(得分:3)
您可以使用生成笛卡尔积的itertools.product
来获得类似的结果
def for_loops(n):
from itertools import product
for row in product("AB", repeat = n):
print " ".join(row)
它的工作方式是,给定一组,它将生成n基数的笛卡尔积,即
(A, B) X (A, B) X (A, B) .... n
n = 4
,这将是(A, B) X (A, B) X (A, B) X (A, B)
n = 3
,这将是(A, B) X (A, B) X (A, B)
下面显示了使用n = 4
运行的示例,它与4嵌套循环中的结果相匹配
>>> for_loops(4)
A A A A
A A A B
A A B A
A A B B
A B A A
A B A B
A B B A
A B B B
B A A A
B A A B
B A B A
B A B B
B B A A
B B A B
B B B A
B B B B
修改1
Thanx,这完全符合我的要求,但我尝试不使用任何内置函数。 -
如果您不想使用任何内置功能,以下可能是替代方法
def for_loops(n):
for i in range(2**n):
print " ".join("AB"[int(j)] for j in "{:04b}".format(i))