今天有點(diǎn)??
a=['XXXX_game.sql', 'XXXX_game_sp.sql', 'XXXX_gamelog_sp.sql', 'XXXX_gamelog.sql']
for i in a:
if 'gamelog' in i:
a.remove(i)
print a
['XXXX_game.sql', 'XXXX_game_sp.sql', 'XXXX_gamelog.sql']
歷遍的過(guò)程中明顯MISS掉了?? 'XXXX_gamelog.sql'? 這個(gè)項(xiàng)目,大家可以自己試試,為什么會(huì)沒刪完,這到底是什么原因呢?
我們?cè)衮?yàn)證一次
for i in a:
if 'gamelog' in i:
print i,
XXXX_gamelog_sp.sql XXXX_gamelog.sql
看到結(jié)果,如果我們不對(duì)它進(jìn)行remove的操作,是不會(huì)有問(wèn)題的。完全可以歷遍。
這樣我們大概知道了,在對(duì)列表進(jìn)行remove操作的時(shí)候,用歷遍的方法是不行的。那如何解決?
a1=a[::] #這里我們鏡像一個(gè)列表a1,但是千萬(wàn)別用a1=a,為什么,我們可以測(cè)試下 a1=a[::] a1==a True; a1 is a False; 如果用a1=a a1==a True; a1 is a True,下來(lái)大家可以測(cè)試下,這個(gè)是列表的一個(gè)特性。
for i in a1:
if 'gamelog' in i:
a.remove(i)
print a
['XXXX_game.sql', 'XXXX_game_sp.sql']
再來(lái)一個(gè)例子
[ { 'Num': '001', 'Name': '張三', 'Workingtime': 'Monday', 'Money': '100' }
?{ 'Num': '002', 'Name': '李四', 'Workingtime': 'Tuesday', 'Money': '200' }]
因?yàn)橛?張三',所以刪除 { 'Num': '001', 'Name': '張三', 'Workingtime': 'Monday', 'Money': '100'}整一行,怎么操作
思路是找到要?jiǎng)h除的元素在列表中的索引,然后調(diào)用 pop,索引作為參數(shù)。pop 返回被刪除的元素。隊(duì)列剩下的就是刪除該索引元素之后的剩余的。
lname = [ { 'Num': '001', 'Name': '張三', 'Workingtime': 'Monday', 'Money': '100' } { 'Num': '002', 'Name': '李四', 'Workingtime': 'Tuesday', 'Money': '200' }]
for x in range(len(lname)): #列表遍歷
if l[x]['name'] == u'張三':
lname.pop(x) #用 pop。
break #操作完成,break 出去
好了,今天就先到這里
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

