簡體   English   中英

使用Python進行列表理解,將浮點數分類為字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM