cxa
V2EX  ›  问与答

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

  •  
  •   cxa · Dec 7, 2018 · 1823 views
    This topic created in 2718 days ago, the information mentioned may be changed or developed.
    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 replies    2018-12-07 20:50:26 +08:00
    ClutchBear
        1
    ClutchBear  
       Dec 7, 2018
    itertools 库有个专门算这种笛卡尔积的方法
    你可以搜索试试
    loryyang
        2
    loryyang  
       Dec 7, 2018
    你是实时跑吗?用 yield 感觉就可以了。如果一次性的,那慢点就慢点好了
    ClutchBear
        3
    ClutchBear  
       Dec 7, 2018
    maichael
        4
    maichael  
       Dec 7, 2018
    优化要结合你实际的需求,循环本身没有什么优化空间。
    zhanglintc
        5
    zhanglintc  
       Dec 7, 2018
    @ClutchBear #3 这个库除了代码美观了以外, 在效率上有做什么优化吗?
    ClutchBear
        6
    ClutchBear  
       Dec 7, 2018
    @zhanglintc #5 最基本的循环有啥优化的.
    爬虫最根本在于网络 io.
    kljsandjb
        7
    kljsandjb  
       Dec 7, 2018 via iPhone
    减少数据相关什么的,循环展开等等,具体情况具体分析
    bidongliang
        8
    bidongliang  
       Dec 7, 2018 via Android
    单就这个问题来说最内部的 format 有很多重复计算,把对变量 a 的处理放到第一个循环里,b, c, d 等类似,尽量往外提。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2957 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 05:31 · PVG 13:31 · LAX 22:31 · JFK 01:31
    ♥ Do have faith in what you're doing.