我有一个URL列表,其中一些URL可能无效。我想从一个随机选择的网址收集图像。如果URL或图像无效,get_image_from_url
函数返回None
。因此,我想重复get_image_from_url(random.choice(urls))
行,直到它不返回None
。因为urls
可能是一个很大的列表,所以我不想在之前为完整的列表过滤掉无效的url。我做了以下工作:
image = None
while not image:
image = ImageNetUtilities.get_image_from_url(random.choice(urls))
return image
我想知道是否有更好的(更具Python性的)方法来实现我的目标。我在用Python3。你知道吗
编辑
正如评论中所建议的,我应该删除我已经选择的任何url。我替换了
image = ImageNetUtilities.get_image_from_url(random.choice(urls))
与
image = ImageNetUtilities.get_image_from_url(urls.pop(random.randrange(len(urls))))
1)如果所有URL都无效,则可以避免无休止的循环;2)只测试每个URL一次;3)使用很酷的Python功能,则该版本将是:
除了
random.sample(urls, k=len(urls))
,您还可以事先random.shuffle
列出您的列表。你知道吗要将其分开:
ImageNetUtilities.get_image_from_url
依次应用于每个URLmap
生成器中删除所有None
值StopIteration
异常相关问题 更多 >
编程相关推荐