2015-03-25 95 views
0

我有一组值得到修改,像这样:我可以用循环来压缩这些值吗?

iskDropped = irrelevant1 
iskDestroyed = irrelevant2 
iskTotal = irrelevant3 

iskDropped = condense_value(int(iskDropped[:-7].replace(',',''))) 
iskDestroyed = condense_value(int(iskDestroyed[:-7].replace(',',''))) 
iskTotal = condense_value(int(iskTotal[:-7].replace(',',''))) 

正如你所看到的,三条线都要经过同样的变化。 (缩写,简写和逗号删除),然后覆盖其原始值。

我想尽可能地浓缩这三条线,因为它感觉效率低下。

我是想这样的事情:

for value in [iskDropped,iskDestroyed,iskTotal]: 
    value = condense_value(int(value[:-7].replace(',',''))) 

它,如果你变成一个打印语句成功并打印正确的值,但它不覆盖/更新值(iskDropped,iskDestroyed的方面的工作,和iskTotal),我需要在程序中稍后调用。

是否有可能在Python中压缩这些行?如果有的话,有人能指出我的方向是正确的吗?

回答

3

你可以这样说:

iskDropped, iskDestroyed, iskTotal = [condense_value(int(value[:-7].replace(',',''))) for value in [iskDropped, iskDestroyed, iskTotal]] 

这种运作方式是透过3个变量的列表循环,执行在每个condense_value功能,并创建一个结果列表,最后解包列表回转化为原始值。

相关问题