簡體   English   中英

如何讓這個 function 決定是否為真,而不是除以變量?

[英]How do I make this function decide if True, than divide by variable?

我正在編寫一個程序來確定 icu 的陽性率。 我給出了一個列表:in_hospitals 和 in_icu,我只需要將列表中的 True 值除以真實值即可得到陽性率 %

這是列表:

in_hospitals = [True, True, False, True, False, True, True, True]
in_icu= [True, False, False, False, False, False, True, False]

function:

def rate_icu(hospitals, icu):
                        hospitalized =  len(icu) / len(hospital) 
                        rate = hospitalized
                        return rate 


rate = rate_icu(hospitals, icu)
print(rate) #Testing Code

function 返回 1,因為它只是將 8 除以 8,但我需要它僅除上面列表中的 True 值

所需的 Output:

33.333333333333336

您可以利用True1False0的事實。 這樣,您可以獲取列表的總和而不是長度:

in_hospitals = [True, True, False, True, False, True, True, True]
in_icu= [True, False, False, False, False, False, True, False]

def rate_icu(hospitals, icu):
                        hospitalized =  sum(icu) / sum(hospitals) 
                        rate = hospitalized
                        return rate 


rate = rate_icu(in_hospitals, in_icu)
print(rate) #Testing Code

# 0.3333333333333333

當然,如果你想要33.33 ,你需要乘以 100。

“明顯”的方法是count每個列表中True的數量:

icu.count(True) / hospital.count(True)

“捷徑”的方法是知道Boolean是從int派生的,其中 True = 1 和 False = 0:只需使用sum

sum(icu) / sum(hospital)

您應該使用sum而不是len

    in_hospitals = [True, True, False, True, False, True, True, True]
    in_icu= [True, False, False, False, False, False, True, False]

    def rate_icu(hospitals, icu):
        hospitalized = (sum(icu) / sum(hospital)) * 100
        return hospitalized 


    rate = rate_icu(in_hospitals, in_icu)
    print(rate) #Testing Code

您需要過濾數組

in_hospitals = [True, True, False, True, False, True, True, True]
in_icu = [True, False, False, False, False, False, True, False]


def rate_icu(hospital, icu):
    rate = len(icu) / len(hospital)
    return rate


rate = rate_icu([x for x in in_hospitals if x is True], [x for x in in_icu if x is True])
print(rate)

我會用總和

in_hospitals = [True, True, False, True, False, True, True, True]
in_icu= [True, False, False, False, False, False, True, False]

def rate_icu(hospitals, icu):
                        hospitalized =  sum(icu) / sum(hospitals) 
                        rate = hospitalized * 100
                        return rate 


rate = rate_icu(in_hospitals, in_icu)
print(f"{rate} %") 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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