python 从sympy展平输出列表

ktca8awb  于 2023-06-04  发布在  Python
关注(0)|答案(1)|浏览(132)

我在计算一大堆场景,包括楼板的几何形状。我需要做的就是重复每一个案例,长度可达200米,厚度可达120厘米。我用sympy解决了。
除了有一个烦人的小问题,我肯定有一个简单的解决方案,但我想不出来。这就是我如何生成不同的计算场景:

from sympy.utilities.iterables import multiset_combinations,multiset_permutations,iproduct

dims_lw = range(1000,200500,500)
dims_th = range(50,130,10)

dimensions = multiset_combinations(dims_lw,2)
combinations_dim = iproduct(dimensions,dims_th)

对于侧面尺寸,从1到200的每一个可能数字的组合(减少场景数量的组合,因为10 x 200m与200 x 10m相同)。然后笛卡尔积得到一系列可能厚度的每一种组合。
当我执行print(list(dimensions))来查看我生成的内容时,我得到了这个:

[([1000, 1500], 50), ([1000, 2000], 50), ([1000, 1500], 100), ([1000, 2500], 50), ([1000, 2000], 100) ...]

这也是我想要的除了我想要的是相同的东西,但没有嵌套列表。(1000,1500,50),(1000,2000,50),等等,这样我就不必在后面处理更多的索引和子索引了。
问题是,如何将当前的输出转换为我想要的输出?还是完全避开我原来的问题?

7cwmlq89

7cwmlq891#

要使输出平坦化,请使用flatten函数:

>>> from sympy import flatten
>>> x = [([1,2], 3),([4,5], 6)]
>>> [flatten(i) for i in x]
[[1, 2, 3], [4, 5, 6]]
>>> [tuple(flatten(i)) for i in x]
[(1, 2, 3), (4, 5, 6)]

相关问题