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中第...