亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如果滿足條件,如何在遍歷列表時在列表中插入值?

如果滿足條件,如何在遍歷列表時在列表中插入值?

收到一只叮咚 2022-11-18 18:20:05
問題; 遍歷這個列表,無論你在哪里找到一個 2,修改列表,這樣你就可以在它的前后加上標志“Found”和“Target”。預期輸入:l = [1,0,1,0,2,1,0,2,0,1]預期輸出:l = [1,0,1,0,"Found",2,"Target", 1,0,"找到",2,"目標",0,1]看起來很容易?l = [1,0,1,0,2,1,0,2,0,1]for i in range(len(l)):    if l[i] == 2:        l.insert(i-1,"Found")        l.insert(i-+,"Target")但這會失敗,但說明了這個想法?我已經搜索了很多堆棧問題,但我似乎無法找到一個優雅的解決方案。我覺得我也在用錯誤的邏輯來解決這個問題,因為我相信你不應該改變你正在迭代的列表?
查看完整描述

3 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

是的,你是對的......你不應該改變你正在迭代的列表。因此,您需要創建列表的兩個版本...一個是原始版本 ( l),另一個是迭代后的原始版本 ( new_l)。


這就是我的意思:


l = [1,0,1,0,2,1,0,2,0,1]

new_l = []


for i in range(len(l)):

    if l[i] == 2:

        new_l.extend(["Found", l[i], "Target"])

    else:

        new_l.append(l[i])

print(new_l)

# [1,0,1,0,"Found",2,"Target",1,0,"Found",2,"Target",0,1]


查看完整回答
反對 回復 2022-11-18
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

在迭代對象時更改對象通常不是一個好主意。


這就是我將如何做到這一點


l = [1,0,1,0,2,1,0,2,0,1]


new_l = []

for el in l:

    if el == 2:

        new_l.extend(["Found", el, "Target"])

    else:

        new_l.append(el)

請注意,我使用的是更“pythonic”且更高效的方法來遍歷列表,而不是使用 range(len(l))。


第二種方法,我不會特別使用,但它可以給你另一個想法是使用 list comprhension + itertools.chain.from_iterable(itertools 是一個標準庫包)。


new_l = (["Found", el, "Target"] if el == 2 else [el] for el in l)

new_l = list(itertools.chain.from_iterable(new_l))



查看完整回答
反對 回復 2022-11-18
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

如果我們不想創建新列表而只想修改第一個。


這個使用與您相同的邏輯,但是我們必須使用全局索引進行迭代,這樣我們就不會在重復的位置追加,也可以跳過不需要的位置。


l = [1,0,1,0,2,1,0,2,0,1,2]


print(l)

k = 0

for i in range(len(l)):

    if l[k] == 2:

        l.insert(k,"Found")

        l.insert(k+2,"Target")

        k+=3

    else:

        k += 1


print(l)

[1, 0, 1, 0, 2, 1, 0, 2, 0, 1, 2]

[1, 0, 1, 0, 'Found', 2, 'Target', 1, 0, 'Found', 2, 'Target', 0, 1, 'Found', 2, 'Target']


查看完整回答
反對 回復 2022-11-18
  • 3 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號