pythonリスト内容の削除

2047 ワード

今日はちょっと�

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']

歴訪中に明らかにMISSが落ちたgamelog.sql'このプロジェクト、みんなは自分で試してみることができて、どうして削除していないで、これはいったいどんな原因ですか?
もう一度検証します

for i in a:
  if 'gamelog' in i:
    print i,
 
XXXX_gamelog_sp.sql XXXX_gamelog.sql

結果を見ると、removeの操作を行わなければ問題はありません.完全に遍歴できる.
これで,リストをremove操作する際に,遍歴的な方法ではだめであることが大体分かった.どうやって解決するの?

a1=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
 
['XXXX_game.sql', 'XXXX_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は削除された要素を返します.キューの残りは、インデックス要素を削除した後の残りです.

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   

さあ、今日はここまで