1 回答
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
Python中的一個(gè)使用列表理解的Liner:
[x for x in li if x % 2 != 0]
返回參數(shù)列表時(shí)出現(xiàn)奇怪的輸出
不允許在使用 for 循環(huán)循環(huán)循環(huán)訪問元素時(shí)從列表中刪除元素。執(zhí)行此操作的最佳方法包括創(chuàng)建一個(gè)新列表 - 要么循環(huán)訪問副本,要么構(gòu)造一個(gè)僅包含所需元素的列表并將其賦回同一變量。
眾所周知,列表中的每個(gè)項(xiàng)目都位于其自己獨(dú)特的索引中;按順序排列,從 0 開始。如果我們刪除某個(gè)項(xiàng)目,則索引大于我們刪除的索引的任何項(xiàng)目現(xiàn)在都已向下移動(dòng)。
這就是為什么這很重要:
foo = ['a', 'b', 'c', 'd']
for index in range(len(foo)):
del foo[index]
在這個(gè)循環(huán)中,我們刪除了所有元素,所以我們應(yīng)該以foo == []結(jié)束,對(duì)吧?事實(shí)并非如此。在我們第一次循環(huán)行程中,我們刪除索引 0 處的項(xiàng)目,索引 1 處的項(xiàng)目成為索引 0 處的項(xiàng)目。我們下次通過循環(huán)時(shí),我們刪除索引 1 處的項(xiàng)目,該項(xiàng)以前是索引 2 處的項(xiàng)目。
請(qǐng)參閱此處,詳細(xì)了解如何在循環(huán)訪問列表時(shí)刪除元素。請(qǐng)參閱此處,詳細(xì)了解如何在反向迭代列表時(shí)刪除元素。
添加回答
舉報(bào)
