第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用列表理解創(chuàng)建 def

使用列表理解創(chuàng)建 def

寶慕林4294392 2022-06-02 15:53:37
我嘗試使用列表推導(dǎo)而不是標(biāo)準(zhǔn)循環(huán)來在 python 中定義一個函數(shù)。在這里,我想編寫一個函數(shù) ,get_index(CS, alpha)它將列表 CS 和閾值 alpha 作為輸入,并返回第一個元素的位置索引,例如CS[index] > alpha。例如:CS = [0, 0, 0, 0, 1, 0, 1, 4, 9, 8, 12, 13, 12, 10, 9, 7, 9]alpha = 12assert get_index(CS, alpha) == 11如果在 CS 中沒有找到這樣的元素,該函數(shù)應(yīng)該返回 -1。我的以下代碼由于SyntaxError: invalid syntax.def get_index(CS, alpha):    return i for i, v in enumerate(CS) if v > alpha    return -1但如果我把它放在一個標(biāo)準(zhǔn)循環(huán)中,它就可以工作,比如:def get_index(CS, alpha):    for i, v in enumerate(CS):        if v > alpha:             return i    return -1我無法區(qū)分并試圖找出原因。欣賞你的想法。謝謝你。
查看完整描述

2 回答

?
夢里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個贊

如果您真的希望為此使用列表推導(dǎo),請執(zhí)行以下操作:


def get_index(CS, alpha):

    l = [i for i, v in enumerate(CS) if v > alpha] or [-1]

    return l[0]

盡管出于多種原因,您的第二個代碼要好得多。


發(fā)生語法錯誤,因?yàn)椴辉试S在函數(shù)內(nèi)有兩個無條件返回。


查看完整回答
反對 回復(fù) 2022-06-02
?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個贊

您可以使用生成器表達(dá)式,它類似于列表推導(dǎo)式,但不會創(chuàng)建列表。


調(diào)用next評估生成器,直到找到第一個結(jié)果,StopIteration如果沒有,則引發(fā)。


try:

    return next(i for i, v in enumerate(CS) if v > alpha)

except StopIteration:

    return -1


查看完整回答
反對 回復(fù) 2022-06-02
  • 2 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號