python去除空list
1. 如何把列表外的列表移除python
python的列表list可以用for循環進行遍歷,實際開發中發現一個問題,就是遍歷的時候刪除會出錯,例如
l = [1,2,3,4]
for i in l:
if i != 4:
l.remove(i)
print l
這幾句話本來意圖是想清空列表l,只留元素4,但是實際跑起來並不是那個結果。再看下面,利用index來遍歷刪除列表l
l = [1, 2, 3, 4]
for i in range(len(l)):
if l[i] == 4:
del l[i]
print l
這樣沒問題,可以遍歷刪除,但是列表l如果變為 l = [1,2,3,4,5]
如果還是按照上面的方法,設想一下,range開始的范圍是0-4,中間遍歷的時候刪除了一個元素4,這個時候列表變成了= [1,2,3,5],這時候就會報錯了,提示下標超出了數組的表示,原因就是上面說的遍歷的時候刪除了元素
所以python的list在遍歷的時候刪除元素一定要小心
可以使用filter過濾返回新的list
l = [1,2,3,4]
l = filter(lambda x:x !=4,l)
print l
這樣可以安全刪除l中值為4的元素了,filter要求兩個參數,第一個是規則函數,第二個參數要求輸入序列,而lambda這個函數的作用就是產生一個函數,是一種緊湊小函數的寫法,一般簡單的函數可以這么些
或者可以這樣
l = [1,2,3,4]
l = [ i for i in l if i !=4]//同樣產生一個新序列,復值給l
print l
或者乾脆建立新的list存放要刪除的元素
l = [1,2,3,4]
dellist = []
for i in l:
if i == 4:
dellist.append(i)
for i in dellist:
l.remove(i)
這樣也能安全刪除元素
所以要遍歷的時候刪除元素一定要小心,特別是有些操作並不報錯,但卻沒有達到預期的效果
上面說到產生新序列,賦值等等,用python的id()這個內置函數來看對象的id,可以理解為內存中的地址,所以有個簡要說明
如果
l = [1,2,3,4]
ll = l
l.remove(1)
print l//肯定是[2,3,4]
print ll//這里會是什麼?
如果用id函數查看的話就發現
print id(l),id(ll)
列印出相同的號碼,說明他們其實是一個值,也就是說上面的print ll將和l列印的一樣,所以python有這種性質,用的時候注意一下就行了
2. python list的元素怎麼去
Python刪除列表元素
使用del 語句來刪除列表的的元素,如:
list1 = ['physics', 'chemistry', 1997, 2000];
del list1[2];
print list1;
*輸出結果
['physics', 'chemistry', 2000]
3. python list 怎麼刪除
>>>l=[1,2,3,4,5]
>>>del(l[1])
>>>l
[1,3,4,5]
del刪除某個list元素
>>>l.clear()
>>>l
[]
直接用clear清空
4. python幾種去掉字元串中間空格的方法
一、strip()方法:去除字元串開頭或結尾的空格
>>> a = " a b c "
>>> a.strip()
'a b c'
二、lstrip()方法:去除字元串開頭的空格
>>> a = " a b c "
>>> a.lstrip()
'a b c '
三、rstrip()方法:去除字元串結尾的空格
>>> a = " a b c "
>>> a.rstrip()
' a b c'
四、replace()方法:可以去除全部空格,主要用於字元串的替換
>>> a = " a b c "
>>> a.replace(" ", "")
'abc'
五、join()方法+split()方法:可以去除全部空格,join為字元串合成傳入一個字元串列表,split用於字元串分割,可以按規則進行分割。
>>> a = " a b c "
>>> b = a.split() # 字元串按空格分割成列表
>>> b ['a', 'b', 'c']
>>> c = "".join(b) # 使用一個空字元串合成列表內容生成新的字元串
>>> c 'abc'
# 快捷用法
>>> a = " a b c "
>>> "".join(a.split())
'abc'
5. python怎麼除去列表中的空字元
>>> a1=[10,2,'','']
>>> a1.remove('')
>>> a1
[10, 2, '']
>>> a1.remove('')
>>> a1
[10, 2]
6. python中二維列表能刪除為空的元素嗎
oldlist=[[1,1,1,1,1],[1,1,1,1,2],[2,2,2,2,4,4],[8,8,8,8,8],[16,16],[],[],[]]
newlist=[xforxinoldlistifx]#刪除空列表[]
coutlist=[x.count(2)forxinnewlist]#計運算元列表中2的個數
7. Python list=[[],[],[],[1],[2],[3]]是怎麼刪除空直
因為對原列表刪改的時候,len(list)是實時變化的,且remove、pop那些函數只能刪除第一個遇到的符合條件的元素,且你的要求是只刪除空元素,而對其他如果有重復的元素不進行修改,所以也不能用元組set.
那我有兩個方法,第一個是記錄list中[]出現的位置,之後按照反向的順序依次remove掉,這樣就不會因為列表長度在變化而刪錯元素;
第二個是直接刪除空元素,但記錄list長度的實時變化,當list長度不再變化,則list中的空元素都已經刪完了。
8. 怎樣去掉重復的list python
參考如下:
import
a = [{'a':12,'b':21},{'a':13,'b':22},{'a':14,'b':22},{'a':15,'b':23},{'a':16,'b':22}]
d = {}
for i in a:
d.setdefault(i['b'], 0)
d[i['b']] += 1
at = .(a)
for i in at:
if d[i['b']] > 1:
a.remove(i)
print a
先把b值統計一下。然後再一個比對,如果統計個數大於1,就從列表中移出。
9. python list 怎麼去除空的list
假設你要處理的列表是lst,代碼如下:
L=[xforxinlstifx]
L就是你要的
10. 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)