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

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

涉及字符串連接的 Python 列表理解中嵌套的 for 循環(huán)細(xì)分

涉及字符串連接的 Python 列表理解中嵌套的 for 循環(huán)細(xì)分

炎炎設(shè)計(jì) 2022-06-22 19:42:19
我正在嘗試通過 Pycharm 調(diào)試器調(diào)試嵌套的 for 循環(huán)......在故障排除過程中,我想將循環(huán)分解為兩個(gè)單獨(dú)的循環(huán)并逐步執(zhí)行代碼,但我很難做到這一點(diǎn)......這是帶有列表理解的代碼塊:def letterCasePermutation(S):    res = ['']    for ch in S:        if ch.isalpha():            res = [i + j for i in res for j in [ch.upper(), ch.lower()]]    return resresult = letterCasePermutation("ab")print(result) # expected result = ['AB', 'Ab', 'aB', 'ab']為了調(diào)試此代碼塊,我想將列表理解分解為以下內(nèi)容:def letterCasePermutation(S):    res = ['']    for ch in S:        if ch.isalpha():            # res = [i + j for i in res for j in [ch.upper(), ch.lower()]]            for i in res:                for j in [ch.upper(), ch.lower()]:                    res.append(i + j)    return resresult = letterCasePermutation("ab")print(result) 上面的塊會(huì)導(dǎo)致無限循環(huán)錯(cuò)誤,而不是像代碼塊 1 那樣提供結(jié)果。預(yù)期結(jié)果 = ['AB', 'Ab', 'aB', 'ab']我無法弄清楚我錯(cuò)過了什么。在花了相當(dāng)多的時(shí)間但仍然被卡住之后,我決定發(fā)布這個(gè)問題。我在這里先向您的幫助表示感謝。
查看完整描述

3 回答

?
阿波羅的戰(zhàn)車

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

它會(huì)導(dǎo)致無限循環(huán),因?yàn)槟瑫r(shí)在其中進(jìn)行迭代res和for i in res追加新值res.append(i + j)。


列表理解不是這種情況,因?yàn)橛覀?cè)的表達(dá)式=被評(píng)估并分配給res.


您可以使用第二個(gè)列表來避免這樣做,


def letterCasePermutation(S):

res = ['']

for ch in S:

    if ch.isalpha():

        _res = []

        for i in res:

            for j in [ch.upper(), ch.lower()]:

                _res.append(i + j)

        res = res + _res

return res


result = letterCasePermutation("ab")

print(result) 

編輯:


def letterCasePermutation(S):

res = ['']

for ch in S:

    if ch.isalpha():

        _res = []

        for i in res:

            for j in [ch.upper(), ch.lower()]:

                _res.append(i + j)

        res = _res

return res

result = letterCasePermutation("ab")

print(result) 


查看完整回答
反對(duì) 回復(fù) 2022-06-22
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

理解不關(guān)心分配給理解中使用的相同名稱。


a = [0, 1, 2, 3, 4]

a = [i*2 for i in a]

print(a)

輸出[0, 2, 4, 6, 8]。


在您的示例中,您res在迭代列表時(shí)將元素添加到列表中:


for i in a:

    a.append(i)

這給了你一個(gè)無限循環(huán),因?yàn)楫?dāng)你繼續(xù)下一個(gè)元素時(shí),更多的元素被添加到列表中。


您的選擇是分配給一個(gè)新的變量名稱,或者使用切片來迭代列表的臨時(shí)副本:


a = [0, 1, 2, 3, 4]

b = []

for i in a:

    b.append(i)


print(b)

輸出[0, 1, 2, 3, 4]


a = [0, 1, 2, 3, 4]

for i in a[:]:

    a.append(i)


print(a)

輸出是[0, 1, 2, 3, 4, 0, 1, 2, 3, 4]。


a[:]是從第一個(gè)元素到最后一個(gè)元素的切片,步長(zhǎng)為 1。您可以在此處或官方 python 文檔中a閱讀有關(guān)切片的更多信息。


查看完整回答
反對(duì) 回復(fù) 2022-06-22
?
呼啦一陣風(fēng)

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

這是細(xì)分:) 謝謝你們幫助我提出這個(gè)想法。


def letterCasePermutation(S):

    res = ['']

    for ch in S:

        _res = []

        for i in res:

            for j in [ch.upper(), ch.lower()]:

                _res.append(i + j)

        res = _res

    return res



result = letterCasePermutation("ab")

print(result)


查看完整回答
反對(duì) 回復(fù) 2022-06-22
  • 3 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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