首先,我有一个包含各种链接的列表。例如:
imagelinks = [
'http://24.media.tumblr.com/e13983b2fcfa441eb18861cf3e9bc0e9/tumblr_mzzdmmkoS81r2gyhfo1_500.jpg',
'A%2F%2F31.media.tumblr.com%2Favatar_c3eb4dbb6150_64.png'
'http://31.media.tumblr.com/avatar_c3eb4dbb6150_16.png'
'http://24.media.tumblr.com/tumblr_lyrqzcl2Mf1rnn3koo1_1280.jpg'
等等。我想要做的只是留下以1280结尾的链接。所以我写了这个代码来帮助清理列表:
def cleanImageLinks():
global imagelinks
removed = 0
for link in imagelinks:
if link[27:33] == 'avatar':
imagelinks.remove(link)
removed += 1
elif link[len(link)-6:len(link)-4] == '16':
imagelinks.remove(link)
removed += 1
elif link[len(link)-6:len(link)-4] == '40':
imagelinks.remove(link)
removed += 1
elif link[len(link)-6:len(link)-4] == '00':
imagelinks.remove(link)
removed += 1
elif link[len(link)-6:len(link)-4] == '28':
imagelinks.remove(link)
elif link[0] == "A":
imagelinks.remove(link)
removed += 1
else:
pass
print str(removed) + " entries removed!"
所以最后我得到“删除了436个条目”,但是当我打印列表时,我仍然可以找到链接,我不想到处都是。由于列表超过2000个条目,436个并不多。我该怎么办?
答案 0 :(得分:0)
请勿使用列表理解修改原件,创建新原件:
In [1036]: imagelinks = [
...: 'http://24.media.tumblr.com/e13983b2fcfa441eb18861cf3e9bc0e9/tumblr_mzzdmmkoS81r2gyhfo1_500.jpg',
...: 'A%2F%2F31.media.tumblr.com%2Favatar_c3eb4dbb6150_64.png',
...: 'http://31.media.tumblr.com/avatar_c3eb4dbb6150_16.png',
...: 'http://24.media.tumblr.com/tumblr_lyrqzcl2Mf1rnn3koo1_1280.jpg']
In [1043]: newlinks=[i for i in imagelinks if i.split('.')[-2].endswith('1280')]
...: print newlinks
...: print '%d links are removed.'%(len(imagelinks)-len(newlinks))
#outputs:
['http://24.media.tumblr.com/tumblr_lyrqzcl2Mf1rnn3koo1_1280.jpg']
3 links are removed.