我正在尝试使用Abaqus(商业FEA代码)脚本接口来生成FE模型,尽管我的问题专门与Python有关,但是对于为什么要这样做的背景有所了解.
Abaqus具有内置的布尔合并操作,该操作需要使用以下语法:
a.InstanceFromBooleanMerge(name='name_string', instances=(
a.instances['string1'], a.instances['string2'],
a.instances['string3'], ), originalInstances=SUPPRESS,
domain=GEOMETRY)
“ instances”参数指定为元组,其中每个元素的格式
a.instances['string1']
我正在尝试使该元组中的元素数以及其中的名称明显可编写脚本.目前,我有如下代码:
my_list = []
for i in range(4):
name = str('a.instances[\'')+str('name_')+str(i)+str('\']')
my_list.append(name)
my_list = tuple(my_list)
print my_list
但是,这给出了:
("a.instances['name_0']", "a.instances['name_1']", "a.instances['name_2']",
a.instances['name_3']")
我曾尝试使用lstrip和rstrip删除“字符,但无济于事.是否有一种生成任意长度的元组的方式,其中元素未用反逗号括起来?该格式由Abaqus接口指定,因此没有其他可以使用的格式.
非常感谢
解决方法:
您接近了,请尝试:
for i in range(4):
val = a.instances["name_"+str(i)]
my_list.append(val)
您可以使用生成器表达式使它更短:
my_list = tuple(a.instances["name_"+str(i)] for i in range(4))