如何使用if语句和elif从条目中清除列表?

2024-05-08 12:59:13 发布

您现在位置:Python中文网/ 问答频道 /正文

所以首先我有一个包含各种链接的列表。例如:

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条并不多。我能做什么?你知道吗


Tags: comhttp列表lenpng链接linktumblr
1条回答
网友
1楼 · 发布于 2024-05-08 12:59:13

不要修改原始文档,请使用列表理解创建新文档:

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.

相关问题 更多 >