首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合使用标量、元组和numpy数组作为字符串参数

混合使用标量、元组和numpy数组作为字符串参数
EN

Stack Overflow用户
提问于 2014-04-24 17:31:56
回答 1查看 273关注 0票数 3

我使用python生成一些用于可视化某些计算数据的POVray呈现代码。我需要从python向POVray代码字符串传递很多参数。我想让这些纸条变得更干净。所以我想直接使用元组和数组作为字符串格式化的参数。如下所示:

代码语言:javascript
复制
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 ) )

而不是这样:

代码语言:javascript
复制
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] ) )
EN

回答 1

Stack Overflow用户

发布于 2014-04-24 17:55:29

假设您想要在字符串中写入的每个元素都是一个列表(或可迭代)-即使它只由一个元素组成-那么您可以使用基于列表展平的变通方法。

考虑一下这个

代码语言:javascript
复制
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]))

结果

代码语言:javascript
复制
'hi 23 56 bye 33 35'

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23265030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档