如何在Python中生成多个深度范围列表?
假设您有一个以多个点递增的标签: 例如,如何在Python中生成多个深度范围列表?,python,algorithm,combinations,Python,Algorithm,Combinations,假设您有一个以多个点递增的标签: 例如,1-A-1。 假设第三个点最多可以增加10倍(1-A-10),之后,A将变成B:1-B-1 然后,此过程重复执行,直到1-Z-10,然后递增,即为2-A-1 如何编写一个通用函数来生成一个列表,该列表包含从1-a-1到10-Z-10的所有组合?这看起来是 产品(as、bs、cs、ds等)创建一个生成器,该生成器为循环生成类似于多级深度的值: for a in as: for b in bs: for c in cs:
1-A-1
。
假设第三个点最多可以增加10倍(1-A-10
),之后,A
将变成B
:1-B-1
然后,此过程重复执行,直到1-Z-10
,然后递增,即为2-A-1
如何编写一个通用函数来生成一个列表,该列表包含从
1-a-1
到10-Z-10
的所有组合?这看起来是
产品(as、bs、cs、ds等)
创建一个生成器,该生成器为循环生成类似于多级深度的值:
for a in as:
for b in bs:
for c in cs:
for d in ds:
yield (a, b, c, d)
因此,要使用此选项,您可以直接强制转换到列表:
result = [f"{a}-{b}-{c}" for a, b, c in labels]
或在标签上循环
for label in labels:
a, b, c = label
formatted = f"{a}-{b}-{c}"
# do something with formatted
你为什么不告诉我们你到目前为止都做了些什么?@trotta我会的,但我已经把这个问题推广到了我的代码不相关的地方。如果参数是一个可变的范围数呢?我知道你说的对这个特定的例子有效,但是我的程序需要是动态的。有时会有一个范围,有时会有三个范围,等等@Matthew试试看。你会发现,product
是可变的。我的意思是,如何将列表列表传递给一个只希望列表作为参数的可变函数,但我发现可以在函数参数中使用前面的星号将列表解包到列表中。
for label in labels:
a, b, c = label
formatted = f"{a}-{b}-{c}"
# do something with formatted