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