如何在命令中定义循环?

时间:2017-01-13 06:05:56

标签: python abaqus

我正在编写python的ABAQUS软件代码,我需要在代码的一部分写下面的代码。

a1.InstanceFromBooleanMerge(name='agg', instances=(a1.instances['Part-1-1'], 
   a1.instances['Part-2-1'], ), keepIntersections=ON, 
   originalInstances=DELETE, domain=GEOMETRY)

在上述代码中,Part的数量会有所不同,我不知道在运行代码之前我有多少部分。

所以,例如,如果我有3个部分,我该如何调整我的代码?在这种情况下,代码必须与以下内容相同;

a1.InstanceFromBooleanMerge(name='agg', instances=(a1.instances['Part-1-1'], 
    a1.instances['Part-2-1'], a1.instances['Part-3-1'],),                   
    keepIntersections=ON, originalInstances=DELETE, domain=GEOMETRY)

正如您所看到的,这是一个命令,我不知道如何在命令中定义For循环的内容???

1 个答案:

答案 0 :(得分:1)

你可以使用列表理解来建立列表"在"方法调用:

a1.InstanceFromBooleanMerge(
    name='agg', 
    instances=tuple([a1.instances["Part-%s-1" % i] for i in range(1,4)]),                   
    keepIntersections=ON,
    originalInstances=DELETE,
    domain=GEOMETRY)

其中4是你得到的矩阵的长度加1,例如range(1, len(matrix)+1)

另一种方法是在方法调用之外构建元组:

instances = tuple([a1.instances["Part-%s-1" % i] for i in range(1,4)])
a1.InstanceFromBooleanMerge(
    name='agg', 
    instances=instances,
    keepIntersections=ON,
    originalInstances=DELETE,
    domain=GEOMETRY)