[英]List Comprehension with Python, classifying float to string
我試圖通過遵循以下三個條件,將列表中的浮動內容轉換為“危機”,“低迷”和“敏感”狀態。 有一種更簡單的列表理解方法嗎? 甚至是地圖?
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')
是的你可以。 在我看來,對於可讀性計數而言,這不是Python方式。
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)]
您的代碼最簡單的重寫是這樣的:
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)
這里的主要困難是您同時檢查了“當前”值和上一個值,因此檢查了enumerate
功能。
希望這可以幫助。
這是我的代碼-
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.