gpt4 book ai didi

python - 混合标量、元组和 numpy 数组作为字符串参数

转载 作者:行者123 更新时间:2023-11-28 18:43:33 25 4
gpt4 key购买 nike

我使用 python 生成一些 POVray 渲染代码,以可视化某些计算数据。我需要将很多参数从 python 传递到 POVray 代码字符串。我想让纸条更干净。所以我想直接使用元组和数组作为字符串格式化的参数。像这样:

sign   = -1
name = "temp1"
nu = 0.245
boxMin =(0.01,0.01,0.01) # tuple
boxMax =array([0.99,0.99,0.99]) # array
povfile.write( '''
isosurface {
function { %f*( %f - data3d_%s(x,y,z) ) }
contained_by { box { <%f,%f,%f>,<%f,%f,%f> } }
}''' %( sign, nu, name, *boxMin, *boxMax ) )

而不是这个:

povfile.write( '''
isosurface {
function { %f*( %f - data3d_%s(x,y,z) ) }
contained_by { box { <%f,%f,%f>,<%f,%f,%f> } }
}''' %( sign, nu, name, boxMin[0],boxMin[1],boxMin[2], boxMax[0],boxMax[1],boxMax[2] ) )

最佳答案

假设您要在字符串中写入的每个元素都是一个列表(或可迭代的)——即使它仅由一个元素构成——那么您可以使用基于列表扁平化的解决方法。

考虑一下

flatten_list = lambda tupleOfTuples : [element for tupl in tupleOfTuples for element in tupl]

a = ['hi',]
b = [23,56]
c = ['bye',33,35]

"{0} {1} {2} {3} {4} {5}".format(*flatten_list([a,b,c]))

结果

'hi 23 56 bye 33 35'

您可以使用更智能的算法来展平参数列表,以便也包括不可迭代的元素(即仅由一项构成的元素)。 (参见例如 this answer )。

关于python - 混合标量、元组和 numpy 数组作为字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23265030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com