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

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

請(qǐng)問(wèn)如何刪除Python中的for循環(huán)中的列表元素?

請(qǐng)問(wèn)如何刪除Python中的for循環(huán)中的列表元素?

慕田峪9158850 2019-11-05 09:04:55
如何刪除Python中的for循環(huán)中的列表元素?我有一份名單a = ["a", "b", "c", "d", "e"]我希望在如下的for循環(huán)中刪除此列表中的元素:for item in a:     print item     a.remove(item)但不管用。我能做什么?
查看完整描述

3 回答

?
楊魅力

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

不允許在使用for循環(huán)。

重寫(xiě)代碼的最佳方法取決于您要做的是什么。

例如,您的代碼等效于:

for item in a:
  print item
a[:] = []

或者,您可以使用while循環(huán):

while a:
  print a.pop(0)

如果符合條件的話,我試著移除物品。然后我去看下一項(xiàng)。

你可以復(fù)制每個(gè)元素將條件匹配到第二個(gè)列表中:

result = []for item in a:
  if condition is False:
    result.append(item)a = result

或者,你可以用filter或列表理解并將結(jié)果分配給a:

a = filter(lambda item:... , a)

a = [item for item in a if ...]

哪里...代表你需要檢查的條件。



查看完整回答
反對(duì) 回復(fù) 2019-11-06
?
躍然一笑

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

迭代列表的副本:

>>> a = ["a", "b", "c", "d", "e"]>>> for item in a[:]:
    print item    if item == "b":
        a.remove(item)a
b
c
d
e>>> print a['a', 'c', 'd', 'e']



查看完整回答
反對(duì) 回復(fù) 2019-11-06
?
猛跑小豬

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

正如其他答案所述,最好的方法是創(chuàng)建一個(gè)新的列表-要么迭代一個(gè)副本,要么用您想要的元素構(gòu)造一個(gè)列表,然后將它分配回同一個(gè)變量。它們之間的區(qū)別取決于您的用例,因?yàn)樗鼈儗?duì)原始列表的其他變量的影響不同(或者說(shuō),第一個(gè)變量影響到它們,第二個(gè)變量沒(méi)有)。

如果由于某種原因,副本不是一個(gè)選項(xiàng),那么您還有另一個(gè)選項(xiàng),它依賴于對(duì)為什么要修改迭代中斷的列表的理解。列表迭代的工作方式是跟蹤一個(gè)索引,每次在循環(huán)中遞增它,直到它從列表的末尾掉下來(lái)。因此,如果在(或之前)移除當(dāng)前索引,則從這一點(diǎn)到末尾的所有內(nèi)容都會(huì)向左移動(dòng)一個(gè)點(diǎn)。但是迭代器不知道這一點(diǎn),實(shí)際上跳過(guò)了下一個(gè)元素,因?yàn)樗F(xiàn)在位于電流索引而不是下一個(gè)索引。但是,移除當(dāng)前的指數(shù)不影響事物。

這意味著,如果您將列表返回到前面,如果您在當(dāng)前索引中刪除一個(gè)項(xiàng),則它的右移-但這并不重要,因?yàn)槟呀?jīng)處理了當(dāng)前位置右側(cè)的所有元素,并且正在向左移動(dòng)-左邊的下一個(gè)元素不受更改的影響,因此迭代器給出了您期望的元素。

TL;DR:

>>> a = list(range(5))>>> for b in reversed(a):
    if b == 3:
        a.remove(b)>>> a[0, 1, 2, 4]

然而,做一個(gè)副本通常在使您的代碼易于閱讀方面更好。為了完整起見(jiàn),我只提到這種可能性。



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

添加回答

舉報(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)