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

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

迭代時如何從列表中刪除項目?

迭代時如何從列表中刪除項目?

元芳怎么了 2019-05-20 17:39:16
我正在迭代Python中的元組列表,并且如果它們符合某些條件,我會嘗試刪除它們。for tup in somelist:     if determine(tup):          code_to_remove_tup我應(yīng)該用什么代替code_to_remove_tup?我無法弄清楚如何以這種方式刪除項目。
查看完整描述

6 回答

?
慕蓋茨4494581

TA貢獻1850條經(jīng)驗 獲得超11個贊

您可以使用列表推導(dǎo)來創(chuàng)建僅包含您不想刪除的元素的新列表:


somelist = [x for x in somelist if not determine(x)]

或者,通過分配切片somelist[:],您可以改變現(xiàn)有列表以僅包含所需的項目:


somelist[:] = [x for x in somelist if not determine(x)]

如果有其他參考somelist需要反映更改,則此方法可能很有用。


你也可以使用而不是理解itertools。在Python 2中:


from itertools import ifilterfalse

somelist[:] = ifilterfalse(determine, somelist)

或者在Python 3中:


from itertools import filterfalse

somelist[:] = filterfalse(determine, somelist)


查看完整回答
反對 回復(fù) 2019-05-20
?
湖上湖

TA貢獻2003條經(jīng)驗 獲得超2個贊

建議列表推導(dǎo)的答案幾乎是正確的 - 除了它們構(gòu)建一個全新的列表然后給它與舊列表相同的名稱,它們不會修改舊的列表。這與你在選擇性刪除方面所做的不同,就像在@ Lennart的建議中一樣 - 它更快,但是如果你的列表是通過多個引用訪問的,那么你只是重新安裝其中一個引用并且不改變列表對象本身可能導(dǎo)致微妙的,災(zāi)難性的錯誤。

幸運的是,獲得列表推導(dǎo)的速度和就地更改所需的語義非常容易 - 只需代碼:

somelist[:] = [tup for tup in somelist if determine(tup)]

注意與其他答案的細微差別:這個沒有分配到一個名字 - 它分配給恰好是整個列表的列表切片,從而替換同一個Python列表對象中的列表內(nèi)容 ,而不是僅僅重新設(shè)置一個引用(從之前的列表對象到新列表對象)就像其他答案一樣。


查看完整回答
反對 回復(fù) 2019-05-20
?
躍然一笑

TA貢獻1826條經(jīng)驗 獲得超6個贊

您需要獲取列表的副本并首先迭代它,否則迭代將失敗,結(jié)果可能是意外結(jié)果。


例如(取決于列表的類型):


for tup in somelist[:]:

    etc....

一個例子:


>>> somelist = range(10)

>>> for x in somelist:

...     somelist.remove(x)

>>> somelist

[1, 3, 5, 7, 9]


>>> somelist = range(10)

>>> for x in somelist[:]:

...     somelist.remove(x)

>>> somelist

[]


查看完整回答
反對 回復(fù) 2019-05-20
?
慕容森

TA貢獻1853條經(jīng)驗 獲得超18個贊

for i in range(len(somelist) - 1, -1, -1):

    if some_condition(somelist, i):

        del somelist[i]

你需要倒退,否則就像鋸掉你所坐的樹枝一樣:-)


Python的2個用戶:更換range通過xrange避免產(chǎn)生硬編碼列表


查看完整回答
反對 回復(fù) 2019-05-20
  • 6 回答
  • 0 關(guān)注
  • 1297 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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