V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cxa
V2EX  ›  问与答

请问这个循环如何优化,效率上?

  •  
  •   cxa · 2018-12-07 11:29:07 +08:00 · 1461 次点击
    这是一个创建于 2177 天前的主题,其中的信息可能已经有所发展或是发生改变。
    url = "http://xxx.xxx.net/{}/{}/{}{}{}.jpg"
    for a in range(2015, 2019):
        for b in range(1, 13):
            for c in range(1, 100):
                for d in range(ord("a"), ord("z") + 1):
                    for e in range(1, 100):
                        new_url = url.format(str(a), str(b), str(c).zfill(2), chr(d), str(d).zfill(2))
                        print(new_url)
    
    8 条回复    2018-12-07 20:50:26 +08:00
    ClutchBear
        1
    ClutchBear  
       2018-12-07 12:55:51 +08:00
    itertools 库有个专门算这种笛卡尔积的方法
    你可以搜索试试
    loryyang
        2
    loryyang  
       2018-12-07 12:57:53 +08:00
    你是实时跑吗?用 yield 感觉就可以了。如果一次性的,那慢点就慢点好了
    ClutchBear
        3
    ClutchBear  
       2018-12-07 12:59:31 +08:00
    maichael
        4
    maichael  
       2018-12-07 12:59:44 +08:00
    优化要结合你实际的需求,循环本身没有什么优化空间。
    zhanglintc
        5
    zhanglintc  
       2018-12-07 13:35:38 +08:00
    @ClutchBear #3 这个库除了代码美观了以外, 在效率上有做什么优化吗?
    ClutchBear
        6
    ClutchBear  
       2018-12-07 13:38:46 +08:00
    @zhanglintc #5 最基本的循环有啥优化的.
    爬虫最根本在于网络 io.
    kljsandjb
        7
    kljsandjb  
       2018-12-07 17:20:38 +08:00 via iPhone
    减少数据相关什么的,循环展开等等,具体情况具体分析
    bidongliang
        8
    bidongliang  
       2018-12-07 20:50:26 +08:00 via Android
    单就这个问题来说最内部的 format 有很多重复计算,把对变量 a 的处理放到第一个循环里,b, c, d 等类似,尽量往外提。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1721 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:39 · PVG 00:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.