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

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

從兩個(gè) python 字符串中刪除相等的字符

從兩個(gè) python 字符串中刪除相等的字符

aluckdog 2023-05-23 10:19:07
我正在編寫一個(gè) Python 代碼來從位于相同索引上的兩個(gè)字符串中刪除相同的字符。例如,remove_same('ABCDE', 'ACBDE')應(yīng)該將兩個(gè)參數(shù)設(shè)為 BC 和 CB。我知道字符串在這里是不可變的,所以我將它們轉(zhuǎn)換為列表。我收到索引錯(cuò)誤。def remove_same(l_string, r_string):    l_list = list(l_string)    r_list = list(r_string)    i = 0    while i != len(l_list):        print(f'in {i} length is {len(l_list)}')        while l_list[i] == r_list[i]:            l_list.pop(i)            r_list.pop(i)        if i == len(l_list) - 1:            break        if i != len(l_list):            i += 1    return l_list[0] == r_list[0]
查看完整描述

4 回答

?
繁星coding

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

在那種情況下我會(huì)避免使用 while 循環(huán),我認(rèn)為這是一個(gè)更好更清晰的解決方案:


def remove_same(s1, s2):

    l1 = list(s1)

    l2 = list(s2)

    out1 = []

    out2 = []

    for c1, c2 in zip(l1, l2):

        if c1 != c2:

            out1.append(c1)

            out2.append(c2)

            

    s1_out = "".join(out1)

    s2_out = "".join(out2)

    

    print(s1_out)

    print(s2_out)


它可以使用一些列表理解來縮短,但我試圖盡可能明確


查看完整回答
反對(duì) 回復(fù) 2023-05-23
?
浮云間

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

我覺得這可能是個(gè)問題。

while l_list[i] == r_list[i]:
            l_list.pop(i)
            r_list.pop(i)

這可以減少列表的大小,它可以低于i.

如果 l_list = ["a"] 和 r_list = ["a"],請(qǐng)對(duì)此進(jìn)行預(yù)演。


查看完整回答
反對(duì) 回復(fù) 2023-05-23
?
慕雪6442864

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

在循環(huán)中修改列表通常不是一個(gè)好主意。這是一個(gè)更簡潔、更 Pythonic 的解決方案。這兩個(gè)字符串被壓縮并并行處理。每對(duì)相等的字符被丟棄,剩余的字符排列成新的字符串。


a = 'ABCDE'

b = 'ACFDE'


def remove_same(s1, s2):

    return ["".join(s) for s

            in zip(*[(x,y) for x,y in zip(s1,s2) if x!=y])]


remove_same(a, b)

#['BC', 'CF']


查看完整回答
反對(duì) 回復(fù) 2023-05-23
?
慕尼黑的夜晚無繁華

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

干得好:


def remove_same(l_string, r_string):

    # if either string is empty, return False

    if not l_string or not r_string:

        return False

    l_list = list(l_string)

    r_list = list(r_string)

    limit = min(len(l_list), len(r_list))

    i = 0

    while i < limit:

        if l_list[i] == r_list[i]:

            l_list.pop(i)

            r_list.pop(i)

            limit -= 1

        else:

            i += 1


    return l_list[0] == r_list[0]



print(remove_same('ABCDE', 'ACBDE'))

輸出:


False


查看完整回答
反對(duì) 回復(fù) 2023-05-23
  • 4 回答
  • 0 關(guān)注
  • 271 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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