如何在python中生成排列列表

2024-05-15 02:50:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在列表中有以下数据。这是一个核反应堆的燃料束(具有半对称性),每个数字代表一个燃料针(具有不同的浓度)。数字越高,燃料就越多。我正在尝试生成大量要运行的输入文件(我已经有了将数组输入到输入文件并运行它的函数)。 这只是一个数组的示例

20 
30 60
50 80 80 
60 80 80 80 
60 81 80 80 80 
60 80 80 00 00 80 
60 80 80 00 00 80 80 
50 80 80 80 80 80 80 80 
40 70 80 81 80 80 80 80 80
20 40 60 70 80 80 70 71 50 30

所以我会用规则来列清单。就像边上的管脚必须是低丰富度的一样,不能被10整除的管脚不能在边上或相邻的面上,或相邻于00的面上。因为每个地点有90个选择,我需要限制总的可能性。这就是为什么我想为数组中的每个位置生成一个选项列表,然后生成每个可能的数组。我了解如何实现我的所有规则,只是对构建所有可能的数组组合感到困惑。你知道吗

如何为数组生成所有可能的组合?或者如果有更好的方法来完成我想做的事情。我的Python经验只值两周。你知道吗


Tags: 文件数据函数示例列表规则代表数字
1条回答
网友
1楼 · 发布于 2024-05-15 02:50:46

如果我理解您的意思,那么使用^{}模块中的工具就相对简单了。像这样的

from itertools import product, chain

def choose_from_2d_lol(lol):
    flattened_options = list(chain.from_iterable(lol))
    for p in product(*flattened_options):
        p_iter = iter(p)
        new_list = [[next(p_iter) for elem in row] for row in lol]
        yield new_list

将迭代所有可能性:

>>> xx = [[[10,20,30]],[[44], [55,66]]]
>>> for chosen in choose_from_2d_lol(xx):
...     print(chosen)
...     
[[10], [44, 55]]
[[10], [44, 66]]
[[20], [44, 55]]
[[20], [44, 66]]
[[30], [44, 55]]
[[30], [44, 66]]

不过,请注意,以这种方式处理每一种可能性可能是完全不可行的,因为可能性的数量将迅速增长。你知道吗

相关问题 更多 >

    热门问题