Python 中列表刪除元素刪不乾淨的問題

2021-10-07 21:55:22 字數 1391 閱讀 2882

scores =[89

,45,55

,30,78

,90,34

,87,10

,59,100

]scores.sort(

)for cj in scores:

if cj<60:

scores.remove(cj)

print

(scores)

#[30, 45, 59, 78, 87, 89, 90, 100]

很明顯,上面這種直接刪除的方法並沒有答到想要的效果。30和45並沒有被刪掉。

出現這種結果的原因是因為列表在進行遍歷的時候,當刪除了第乙個數10的時候,30佔據了第乙個數10的位置,因此遍歷時並沒有對30這個數進行判斷,因而30沒有被刪掉。

同理可得,34被刪掉後45這個數被跳躍了。

解決方法如下:

#方法一:對原列表進行備份,遍歷時遍歷備份的列表。

scores =[89

,45,55

,30,78

,90,34

,87,10

,59,100

]new_scores = scores[:]

for score in new_scores:

if score<60:

scores.remove(score)

print

(scores)

# [89, 78, 90, 87, 100]

# 方法二:在刪除資料的時候使下標不變

scores =[89

,45,55

,30,78

,90,34

,87,10

,59,100

]index =

0while index<

len(scores)

:if scores[index]

<60:

del scores[index]

else

: index +=

1print

(scores)

# [89, 78, 90, 87, 100]

# 不增加額外計算空間刪除重複元素

nums =[1

,1,2

,3,4

,5,5

]index =

0while index <

len(nums)

: num = nums.pop(index)

if num in nums:

index +=

1else

: index +=

1print

(nums)

# [1, 3, 5, 2, 4]

python刪除列表元素 Python列表元素分組

比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...

python中刪除列表中的元素

1.remove remove刪除列表中的某個元素,但是只刪除第一 這個第一是指從前至後 個出現的。in 11 a 0,2,3,2 in 12 a out 12 0,2,3,2 in 13 a.remove 2 in 14 a out 14 0,3,2 2.del 根據元素的索引刪除元素 in 21...

Python刪除列表元素

可以使用 del 語句來刪除列表的元素,如下例項 例項 python 2.0 usr bin python list1 physics chemistry 1997,2000 print list1 del list1 2 print after deleting value at index 2 ...