a = [0,1,1,2,2,3]
for i in
a: if i == 1:
a.remove(i)
print(a)
a = [i for i in
aif i != 1]
其實歸根到底python還是不想讓你在對原來列表進行修改時採取for…in…這個模式,因為不知覺的你就掉坑了,因此如果要修改,請用while,如果非得用remove,那麼就得用copy模組產生乙個副本輔助進行。如下:
a = [0,1,1,2,2,3]
i = 0
while i < len(a):
ifa[i] == 1:
a.remove(a[i])
else:
i += 1
如果說for…in…是自動遍歷可迭代物件,那while就是純人工手動,這樣可以保證在該加的時候讓i進行++操作,不該的時候就不亂加。
如果對於for…in…的執念很深,就需要借助副本來做,copy模組中的深淺拷貝可以說是在面試中always被提到的,這裡簡單提一下他們與傳統賦值(諸如b=a)的區別:
賦值是對物件的引用進行了複製,原物件沒有變化,b=a後兩個引用指向同一物件,因此原來要改變的時候兩個全變。
淺拷貝和深拷貝是對物件進行複製,重新開出一塊記憶體空間,淺拷貝會複製物件,但是物件內部如果存在子物件(拿列表來說,就是列表中還含有列表,例[1,2,3,4,[5,6,7]]),則不會複製,而是直接引用原物件的。深拷貝則是全部進行拷貝。
從定義上來看,深拷貝與淺拷貝都可以用於對該題目的解決。如下:
import copy
a = [0,1,1,2,2,3]
aa = copy.copy(a)
for i in a:
if i == 1:
aa.remove(i)
當然,deepcopy也可以。 python對列表進行統計計算
1 獲取指定元素出現的次數 使用count 方法可以獲取指定元素在列表 現的次數,基本語法如下 listname.count obj listname 表示列表名稱 obj 表示判斷是否存在物件,這裡只能進行精確匹配,即不能是元素的一部分 例項 talk 你們說 我資訊保安小萌新帥不帥!不帥!num...
Python 對列表中的字典進行去重
from functools import reduce data list run function lambda x,y x if y in x else x y reduce run function,data list reduce函式為python內建函式 reduce function,...
對python的package進行修改
很多時候,python提供的大量的package極大地方便了我們的程式設計。但是,當我們想要修改部分 的時候,該怎麼辦呢?本文以mmcv為例,介紹修改 的過程。在此之前,我是通過 pip install mmcv安裝的。有乙個簡單的方法可以找到安裝的路徑 在命令列終端輸入 usr local lib...