Python 任意深度嵌套循环
如何将以下内容转换为可以以任意深度方式累积列表列表的递归函数Python 任意深度嵌套循环,python,python-3.x,algorithm,recursion,Python,Python 3.x,Algorithm,Recursion,如何将以下内容转换为可以以任意深度方式累积列表列表的递归函数 def do_list(n): ls = [] for a in range(10): for b in range(10): for c in range(10): ls.append([a, b, c]) return ls 例如do\u list(10,4)可以: for a in range(10): for b in
def do_list(n):
ls = []
for a in range(10):
for b in range(10):
for c in range(10):
ls.append([a, b, c])
return ls
例如do\u list(10,4)
可以:
for a in range(10):
for b in range(10):
for c in range(10):
for d in range(10):
ls.append([a, b, c, d])
for a in range(10):
for b in range(10):
for c in range(10):
for d in range(10):
for e in range(10):
ls.append([a, b, c, d, e])
而do\u list(10,5)
可以:
for a in range(10):
for b in range(10):
for c in range(10):
for d in range(10):
ls.append([a, b, c, d])
for a in range(10):
for b in range(10):
for c in range(10):
for d in range(10):
for e in range(10):
ls.append([a, b, c, d, e])
只需使用:
给你钱
@tobias_k的想法可能更好,使用函数的重复功能而不是生成器:
def do_list(n, d):
return list(itertools.product(range(n), repeat=d))
只需使用:
给你钱
@tobias_k的想法可能更好,使用函数的重复功能而不是生成器:
def do_list(n, d):
return list(itertools.product(range(n), repeat=d))
要回答如何将其转换为递归函数的实际问题,请尝试以下方法:
def do_list(n):
if n <= 0:
yield []
else:
for res in do_list(n-1):
for x in range(10):
yield [*res, x]
for x in do_list(5):
print(x)
但是,对于这个特定的函数,并且使用Python,您可能更应该使用itertools.product
:
import itertools
for x in itertools.product(range(10), repeat=5):
print(x)
要回答如何将其转换为递归函数的实际问题,请尝试以下方法:
def do_list(n):
if n <= 0:
yield []
else:
for res in do_list(n-1):
for x in range(10):
yield [*res, x]
for x in do_list(5):
print(x)
但是,对于这个特定的函数,并且使用Python,您可能更应该使用itertools.product
:
import itertools
for x in itertools.product(range(10), repeat=5):
print(x)
查看
itertools.product
,特别是product(范围(10),重复=任何内容)
My bad。我使用python是因为我需要伪代码来用其他语言实现这个函数,所以我的问题实际上是“如何编写这样的函数”,而不是“如何使用python专门提供的工具来解决这个问题”。@pistacchioitertools.product
的文档提供了一种实现这个函数的可能方法:。看一看,也许你可以把它改成其他语言。看看itertools.product
,特别是product(范围(10),重复=任意)
My bad。我使用python是因为我需要伪代码来用其他语言实现这个函数,所以我的问题实际上是“如何编写这样的函数”,而不是“如何使用python专门提供的工具来解决这个问题”。@pistacchioitertools.product
的文档提供了一种实现这个函数的可能方法:。看看,也许你可以把它改成其他语言。我的错。我使用python是因为我需要伪代码来用其他语言实现这个函数,所以我的问题实际上是“如何编写这样的函数”,而不是“如何使用python专门提供的工具来解决这个问题”。我的错。我使用python是因为我需要伪代码来用其他语言实现这个函数,所以我的问题实际上是“如何编写这样的函数”,而不是“如何使用python专门提供的工具来解决这个问题”。因为我在寻找最简单的算法,使它更容易移植到其他语言,您能否编辑您的答案,以便实际返回列表列表(避免使用生成器)并避免使用同样特定于python的spread运算符?感谢我正在寻找最简单的算法,以便更容易地移植到其他语言,请您编辑您的答案,以便实际返回列表列表(避免使用生成器)并避免使用特定于python的spread运算符?谢谢