python去除元素
A. python 去除列表中重復的元素
這個有幾種方法來完成,但是對於不可哈希的數據來說,BIF set() 是無效的,會報錯,下面介紹幾種方法
對於以上4種方法,各有利弊,一般來說是方法2最快,方法1和方法3比較類似,但是方法3可以保持列表中的排序和之前的一樣,但是開頭也說了,這樣無法對不可哈希的對象進行去重復,比如列表中的元素還是列表,這種情況下就只能用方法4了,但是方法4的缺點就是比較的慢。
B. python數組中怎樣刪除符合條件的元素
使用filter來實現,以python3為例,如果刪除列表中的所有0,則可使用下面代碼實現:
a=[1,2,0,3,4,0,5,0,6]
b=filter(lambdax:x!=0,a)
list(b)
效果如下:
註:如果使用python2則直接輸出b即可,在python3中filter返回結果為可迭代的對象,需使用list轉換成列表。
C. python假如要除去L中所有是x的元素,要怎麼辦
Python中列表元素刪除
1.使用del命令刪除列表中的指定位置上的元素
l = [1, 2, 3, 4, 5]del l[2] #將下標為2的元素刪除print(l)#[1, 2, 4, 5]del l #將列表l刪除 此時再列印輸出就會報錯 因為這個列表沒有定義print(l)#NameError: name 'l' is not defined
[1, 2, 4, 5]
Traceback (most recent call last):
File "F:/pythonDemo/python代碼/生成隨機數並將奇數刪除.py", line 54, in <mole> print(l)
NameError: name 'l' is not defined
當要用del命令循環刪除元素時,應當倒序刪除
import randomdef deleteoddnumber(x): for i in range(len(x) - 1, 0, -1): # 循環倒序 if x[i] % 2 != 0: del x[i] return x
x = []while True: if len(x) == 20: break n = random.randint(1, 100) if n not in x:
x.append(n)print('刪除奇數元素前\n', x)
print('刪除奇數元素後\n', deleteoddnumber(x))
刪除奇數元素前 [24, 19, 71, 2, 83, 1, 6, 45, 29, 38, 78, 74, 46, 14, 93, 48, 100, 31, 25, 30]刪除奇數元素後 [24, 2, 6, 38, 78, 74, 46, 14, 48, 100, 30]
若是正序刪除 則會出現下標越界報錯
import randomdef deleteoddnumber(x): for i in range(len(x)):# 循環正序 if x[i] % 2 != 0: del (x[i]) return x
x = []while True: if len(x) == 20: break n = random.randint(1, 100) if n not in x:
x.append(n)print('刪除奇數元素前\n', x)print('刪除奇數元素後\n', deleteoddnumber(x))
刪除奇數元素前Traceback (most recent call last): [84, 93, 16, 40, 12, 98, 67, 97, 83, 39, 26, 25, 99, 19, 17, 62, 68, 43, 4, 47] File "F:/pythonDemo/python代碼/生成隨機數並將奇數刪除.py", line 15, in <mole> print('刪除奇數元素後\n', deleteoddnumber(x)) File "F:/pythonDemo/python代碼/生成隨機數並將奇數刪除.py", line 4, in deleteoddnumber if x[i] % 2 != 0:IndexError: list index out of range
會出現列表下標越界錯誤,
2.使用列表的pop()方法刪除並返回指定位置上的元素(默認為最後一個即pop(len(list)-1),刪除下標為index的元素可表示為pop(index))
下標index不可以超過列表范圍,否則拋出異常。
l = [1, 2, 3, 4, 5]print(l.pop(len(l)-1)) # 和l.pop()效果相同
print(l.pop(3))
54
3.使用列表對象的remove()方法刪除首次出現的指定元素,如果列表中不存在要刪除的元素,則拋出異常。
l = [1, 2, 3, 3, 4, 5]l.remove(1) #刪除元素值為1的元素l.remove(3) #刪除元素值為3的元素
print(l)
[2, 3, 4, 5]
值得注意的是,刪除的時候remove方法總是將第一個找到的元素進行刪除 而沒有把所有相同的元素值都給刪除。
D. Python 中刪除列表元素的三種方法
列表基本上是 Python 中最常用的數據結構之一了,並且刪除操作也是經常使用的。
那到底有哪些方法可以刪除列表中的元素呢?這篇文章就來總結一下。
一共有三種方法,分別是 remove , pop 和 del ,下面來詳細說明。
remove 是從列表中刪除指定的元素,參數是 value。
舉個例子:
需要注意, remove 方法沒有返回值,而且如果刪除的元素不在列表中的話,會發生報錯。
pop 是刪除指定索引位置的元素,參數是 index。如果不指定索引,默認刪除列表最後一個元素。
pop 方法是有返回值的,如果刪除索引超出列表范圍也會報錯。
del 一般用在字典比較多,不過也可以用在列表上。
直接傳元素值是不行的,會報錯:
del 還可以刪除整個列表:
以上就是本文的全部內容,如果覺得還不錯的話,歡迎 點贊 , 轉發 和 關注 ,感謝支持。
推薦閱讀:
E. Python基礎實戰之集合元素的添加和刪除
集合元素的添加操作有兩種方法:
1、調用add()方法,一次添加一個元素
2、調用update()方法,至少添加一個元素
------------------------------
s={10,20,40,80}
s.add(30) #一次添加一個元素
print(s) #{10,30,20,40,80}
s.updae({200,300,400}) #一次至少添加一個元素
print(s) #{200,10,300,20,400,30,80,40}
s.update([800,900]) #可以添加列表
s.update((45,55)) #可以添加元組
print(s) #{200,5510,45,300,800,20,900,400,30,80,40}
------------------------------
集合元素的刪除操作
1、調用remove()方法,一次刪除一個指定元素,如果指定的元素不存在拋出KeyError
2、調用discard()方法,一次刪除一個指定元素,如果指定的元素不存在不拋異常
3、調用pop()方法,一次只刪除一個任意元素
4、調用clear()方法,清空集合
------------------------------
s.remove(200) #一次刪除一個指定元素,如果指定的元素不存在拋出KeyError
print(s) #{55,10,45,300,800,20,900,400,30,80,40}
s.discard(900) #一次刪除一個指定元素,如果指定的元素不存在不拋異常
print(s) #{55,10,45,300,800,20,400,30,80,40}
s.pop() #刪除誰不知道,任意一個元素
print(s) #{55,10,45,800,20,400,30,80,40}
s.clear() #清空集合中的所有元素
print(s) #set()
F. python list如何去除某個元素
1.使用remove方法,例如:
a=["aa","bb"]
a.remove("aa")
#["bb"]
2.使用pop方法,數字為索引從0開始.例如:
a=["aa","bb","cc"]
a.pop(1)
#["aa","cc"]
G. python如何刪除列表中的元素
刪除所有的元素用clear()方法
Remove all items:clear()
刪除指定位置用pop
Remove an item by index and get its value:pop()
通過值來刪除
Remove an item by value:remove()
通過index來刪除
Remove items by index or slice:del
H. python如何刪除list里重復的元素
一共使用四種方法來去除列表中的重復元素,下面是具體實現:
def f1(seq):
# not order preserving
set = {}
map(set.__setitem__, seq, [])
return set.keys()
def f2(seq):
# order preserving
checked = []
for e in seq:
if e not in checked:
checked.append(e)
return checked
def f3(seq):
# Not order preserving
keys = {}
for e in seq:
keys[e] = 1
return keys.keys()
def f4(seq):
# order preserving
noDupes = []
[noDupes.append(i) for i in seq if not noDupes.count(i)]
return noDupes
def f5(seq, idfun=None):
# order preserving
if idfun is None:
def idfun(x): return x
seen = {}
result = []
for item in seq:
marker = idfun(item)
# in old Python versions:
# if seen.has_key(marker)
# but in new ones:
if marker in seen: continue
seen[marker] = 1
result.append(item)
return result
def f6(seq):
# Not order preserving
set = Set(seq)
return list(set)