今天有點囧
?123456a
=
[
'**X_game.sql'
,
'**X_game_sp.sql'
,
'**X_gamelog_sp.sql'
,
'**X_gamelog.sql'
]
for
i
in
a:
if
'gamelog'
in
i:
a.remove(i)
print
a
[
'**X_game.sql'
,
'**X_game_sp.sql'
,
'**X_gamelog.sql'
]
歷遍的過程中明顯MISS掉了 '**X_gamelog.sql' 這個項目,大家可以自己試試,為什么會沒刪完,這到底是什么原因呢?
我們再驗證一次
?12345for
i
in
a:
if
'gamelog'
in
i:
print
i,
**X_gamelog_sp.sql **X_gamelog.sql
看到結果,如果我們不對它進行remove的操作,是不會有問題的。完全可以歷遍。
這樣我們大概知道了,在對列表進行remove操作的時候,用歷遍的方法是不行的。那如何解決?
?1234567a1
=
a[::]
#這里我們鏡像一個列表a1,但是千萬別用a1=a,為什么,我們可以測試下 a1=a[::] a1==a True; a1 is a False; 如果用a1=a a1==a True; a1 is a True,下來大家可以測試下,這個是列表的一個特性。
for
i
in
a1:
if
'gamelog'
in
i:
a.remove(i)
print
a
[
'**X_game.sql'
,
'**X_game_sp.sql'
]
再來一個例子
[ { 'Num': '001', 'Name': '張三', 'Workingtime': 'Monday', 'Money': '100' }
{ 'Num': '002', 'Name': '李四', 'Workingtime': 'Tuesday', 'Money': '200' }]
因為有'張三',所以刪除 { 'Num': '001', 'Name': '張三', 'Workingtime': 'Monday', 'Money': '100'}整一行,怎么操作
思路是找到要刪除的元素在列表中的索引,然后調用 pop,索引作為參數。pop 返回被刪除的元素。隊列剩下的就是刪除該索引元素之后的剩余的。
?12345lname
=
[ {
'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 出去
好了,今天就先到這里
PHP編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
|
新聞熱點
疑難解答