使用Python列出理解,将float分类为字符串

时间:2018-02-06 09:46:36

标签: python list-comprehension

我试图将列表中的花车转变为“危机”,“经济低迷”等状态。和易受影响的'遵循这三个条件。有没有更简单的列表理解方法来做到这一点?甚至是地图?

sector_g = np.random.randn(100) # 1 sector growth rates
sector_epi_states = [] #sector states

for i in range(0,100):
    if sector_g[i] <0 and sector_g[i-1] <0 and sector_g[i] != sector_g[0]:
        sector_epi_states.append('crisis')
    elif sector_g[i] <0:
        sector_epi_states.append('downturn')
    elif sector_g[i] >0:
        sector_epi_states.append('sucpetible')

3 个答案:

答案 0 :(得分:0)

是的,你可以。在我看来,对于可读性而言,这并不是一种Pythonic方式。

sector_epi_states = ['crisis' if sector_g[i] <0 and sector_g[i-1] <0 else ('downturn' if sector_g[i] <0 else 'sucpetible') for i in range(100)]

答案 1 :(得分:0)

最简单的代码重写方式如下:

sector_g = [0, -1, 2, 4, 5]
sector_epi_states = [] #sector states

def determine(i, x):
    if x <0 and sector_g[i-1] <0:
        sector_epi_states.append('crisis')
    elif x <0:
        sector_epi_states.append('downturn')
    elif x >0:
        sector_epi_states.append('sucpetible')

[determine(i, x) for i, x in enumerate(sector_g)];
print(sector_epi_states)

这里的主要困难是你检查&#34;当前&#34;值和前一个,因此enumerate函数。

希望这有帮助。

答案 2 :(得分:0)

这是我的代码 -

import numpy as np

sector_g = np.random.randn(100) # 1 sector growth rates
sector_epi_states = [] #sector states    
sector_epi_states = [ 'crisis' if (sector_g[i] < 0 and sector_g[i-1] < 0) else
                     'downturn' if sector_g[i] < 0 else 
                     'sucpetible' if sector_g[i] > 0 else ''
                     for i in range(0,100) ] #sector states
print(sector_g)
print(sector_epi_states)