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