Python:优雅地改善(代码节省)一个函数,以避免多个语句

2024-09-30 01:32:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写这个函数来读取Las文件并保存一个shapefile。函数创建一个包含8个字段的shapefile。我希望在函数中插入一个parse元素,以便选择要保存LAS2SHP的字段(inFile,outFile=None,parse=None)。如果没有,则保存所有字段。如果解析是 parse=“irn”字段强度、返回数和返回数被保存。跟随传说

"i": p.intensity,
"r": p.return_number,
"n": p.number_of_returns,
"s": p.scan_direction,
"e": p.flightline_edge,
"c": p.classification,
"a": p.scan_angle, 

我写了一个解决方案如果…如果…否则…真的是代码消耗(而不是优雅)。感谢您对保存代码的所有帮助和建议

提前谢谢 詹尼

这里是python中的原始函数

^{pr2}$

Tags: 文件函数代码none元素numberscanparse
1条回答
网友
1楼 · 发布于 2024-09-30 01:32:57

或许可以试试这样的方法:

    pdata = [p.z] + [getattr(p, pattr[key]) for key in parse]
    pdata = map(float, pdata)
    w.record(*pdata)
  • for key in parse循环parse中的字母。例如, 如果parse = 'irn',则键循环通过值irn。在
  • pattr是dict。pattr[key]是关联的 属性。例如,pattr['i']"intensity"。在
  • ^{cd11>属性的值是 在p中。例如,getattr(p, "intensity")p.intensity。这是当您知道属性名称为字符串时获取属性值的方法(例如pattr[key])。 在将参数发送到w.record之前,w.record(*pdata)中的*解压缩{}。例如,w.record(*[1,2,3])相当于w.record(1,2,3)。这是一种方式sends an arbitrary number of arguments to a function。在

例如

^{pr2}$

相关问题 更多 >

    热门问题