python中使用list的刪除需要注意

2021-10-02 06:09:43 字數 976 閱讀 1121

casenum =int(input())

for k in range(casenum):

ans=0

n=int(input())

buildings=list(map(int,input().split()))

while buildings:#如果開始的列表中還有值

magicalset = set()

for i in range(n):

t=buildings[i]

print(buildings)

print(n)

print(i)

if not (t in magicalset):

magicalset.add(t)#如果這個元素沒有在集合中,就加入集合,並且在初始列表中刪除

# buildings(t)#remove函式只會刪除列表的第乙個指定的值,如果需要刪除多個,需要使用迴圈,這裡不能用remove

del buildings[i]

i-=1#刪除了乙個元素,i回退乙個

n-=1

ans+=1

print(ans)

remove函式刪除元素只會刪除列表的第乙個與指定值相同的值,要刪除當前的值可使用下標索引的方法

這裡在列表中刪除了乙個值,列表中的個數會減少,但是for迴圈的i和n都還是會按照之前的值來,就會報錯index out of range

修改為while迴圈:

casenum =int(input())

for k in range(casenum):

ans=0

n=int(input())

buildings=list(map(int,input().split()))

while buildings:#如果開始的列表中還有值

magicalset = set()

i=0while i這也說明了for迴圈不能取代while迴圈

python中使用方便的LIST物件

在python中定義乙個列表只需要如下語句 li a b c d li.extend f g 將另乙個列表新增到列表末尾 a,b,c,d,f,g 還可以將專案新增到指定的位置 li.insert 2,f 將 f 新增到第二個位置 a,b,f,c,d,e 刪除元素也可以通過函式進行 remove 刪除...

C 中使用List的問題

問題描述 乙個存放struct的list,如果將其中struct資料再次新增到另外乙個list中時,更改第二個list中struct中的值,會不會影響第到第乙個list呢?現在用 來證明 using system using system.collections.generic using syst...

list中使用erase迭代器失效

當list使用erase時,會使當前被刪除元素的迭代器失效,如何解決這一問題。看c primer中是採取以下第一種方法 1 for list iterator iter l.begin iter l.end iter 在寫測試程式時,發現該種方法會有bug,即當我剛好滿足條件需刪去的值為list中第...