我使用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] ) )发布于 2014-04-24 17:55:29
假设您想要在字符串中写入的每个元素都是一个列表(或可迭代)-即使它只由一个元素组成-那么您可以使用基于列表展平的变通方法。
考虑一下这个
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)。
https://stackoverflow.com/questions/23265030
复制相似问题