Python中有没有一种干净的方法可以将列表或单个元素转换为特定格式?

时间:2019-09-11 15:36:55

标签: python list numpy math floating-point

我有一个配置文件,其中的项目可以是单个元素或列表。

pct_accepted=0.75
pct_rejected=0.35, 0.5

回读后,它们都将以字符串形式显示,

config['pct_accepted']='0.75'
config['pct_rejected']=['0.35', '0.5']

是否有一种干净的方法可以将它们转换为浮点型,而不必检查它们是标量还是列表 我现在的尝试是:

for k in ['pct_accepted','pct_rejected']:
   if isinstance(config[k], list) :
      config[k]=[float(item) for item in config[k]]
   if isinstance(config[k], string) :
      config[k]=float(config[k])

看起来不太整齐。

2 个答案:

答案 0 :(得分:2)

由于您添加了numpy标签:

In [161]: np.array('12.23',float).tolist()                                                                   
Out[161]: 12.23
In [162]: np.array(['12.23','12.23'],float).tolist()                                                         
Out[162]: [12.23, 12.23]

简短,甜蜜和矫kill过正!

答案 1 :(得分:1)

没有干净的方法,仅仅是因为转换对列表无效:某物必须查看数据类型。您可以将其隐藏在函数中,但仍然存在。

可以通过使用可用的广播例程来稍微缩短代码。诸如map(float, config[k])之类的东西可能会让您觉得更好。

您还可以将类型存储在变量中,并对变量进行两次测试,而不是使用两次isinstance调用。这样可以节省一些字符,并且缩放效果不佳,但对简单的应用程序效果很好。