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

小白的白请教一个问题,如何这样生成一个列表

  •  
  •   cffcaa · 2016-09-06 11:48:48 +08:00 · 2011 次点击
    这是一个创建于 3029 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是我想用笨方法下载一些资源,链接是类似这样的  xx.xx.xx/变量 A/变量 B.txt (称做变量是否正确)

    xx.xx.xx/123/652   xx.xx.xx/123/653   xx.xx.xx/123/654   xx.xx.xx/123/655   xx.xx.xx/123/656
    然后是  xx.xx.xx/124/786   xx.xx.xx/124/787   xx.xx.xx/124/788   xx.xx.xx/124/789   xx.xx.xx/124/790

    想了半天 也想不到啥好办法,如何能自动生成这样的列表,因为有两个变量,第变量 A 每增加 1 ,变量 B 则是五个中的一个
    如何能方便的按两个变量规则生成一个下载列表呢?
    请各位大师帮助! 感谢
    第 1 条附言  ·  2016-09-06 15:30:02 +08:00
    本来放弃了,看到 @xucuncicero 说用 Excel 也能解决这个问题
    再一次,希望能说明白
    链接 1 , xx.xx.xx/12345(变量 A)/66605-66610 (变量 B ,在五个之间有一个是正确的)
    链接 2 , xx.xx.xx/12346/66606-66611(如果链接 1 的变量 B 是 66610,此处变量 B 在 66610-66615 之间有一个是正确的,如果链接 1 的变量 B 是 66608 ,此处变量 B 就在 66608-66612 之间有一个是正确的)
    下面链接都是这个规律。
    20 条回复    2016-09-06 17:05:53 +08:00
    v9ox
        1
    v9ox  
       2016-09-06 11:52:56 +08:00 via iPhone   ❤️ 1
    两个 for 循环
    cffcaa
        2
    cffcaa  
    OP
       2016-09-06 11:58:29 +08:00
    @v9ox
    可以给出详细步骤吗?纯小白一只
    我先搜一下
    BBrother
        3
    BBrother  
       2016-09-06 12:08:58 +08:00   ❤️ 1
    ```
    for a in [123, 124, 125]:
    for b in [456, 457, 458]:
    print "xxx.xxx.xxx/" + str(a) + "/" + str(b)
    ```
    BBrother
        4
    BBrother  
       2016-09-06 12:10:45 +08:00   ❤️ 1
    @BBrother 哎呀,回复不能用 markdown 吗?
    cffcaa
        5
    cffcaa  
    OP
       2016-09-06 12:13:52 +08:00
    @BBrother 请问这是那种语言的格式,我好下载安装
    有 win 下的批处理吗?
    BBrother
        6
    BBrother  
       2016-09-06 12:20:49 +08:00   ❤️ 1
    @cffcaa python ,批处理不会啊
    cffcaa
        7
    cffcaa  
    OP
       2016-09-06 12:37:35 +08:00
    @BBrother  谢谢,试验成功,
    不过这有上百条需要生成,有没有更便捷的方法?
    我是不是要求太份了!
    我再摸索摸索
    zhanglintc
        8
    zhanglintc  
       2016-09-06 12:50:43 +08:00   ❤️ 1
    批处理的:

    @echo off

    set outer=123
    :outerloop
    set inner=652
    :innerloop
    echo xx.xx.xx/%outer%/%inner%
    set /a inner = %inner% + 1
    if not %inner% == 791 goto innerloop
    set /a outer = %outer% + 1
    if not %outer% == 125 goto outerloop

    echo.
    echo Press any key to close...
    pause>nul

    不确定批处理里面的 for 能不能成功. 就想到了用两次 goto 来实现...
    还有就是注意一下最后那个边界, 要输出 790 就要设置到 791, 输出 124 就要设置到 125...
    cffcaa
        9
    cffcaa  
    OP
       2016-09-06 13:11:50 +08:00
    感谢几位的回复,
    刚才我有表达错误,变量 A 增加 1 ,变量 B 也会增加,我大概估算了下,量太大了,算了
    再次感谢 zhanglintc,BBrother,以及 v9ox 的帮助,
    感谢!
    xucuncicero
        10
    xucuncicero  
       2016-09-06 13:15:01 +08:00   ❤️ 1
    都这么高大上啊,楼主用 Excel 吗?
    A 列生成 A :=INT((ROW()-1)/5)+123
    B 列生成 B :不知道有什么规律,这个 652 和 786 是根据什么来的
    然后 C 列:="xx.xx.xx/"&A1&"/"&B1&".txt"
    要多少条就下拉多少行
    BBrother
        11
    BBrother  
       2016-09-06 13:15:21 +08:00   ❤️ 1
    @cffcaa 你可以看看 python 的 itertools 模块的 product 方法,应该比两个 for 快。但是几百条的话,两个 for 也是一瞬间的事。
    zhanglintc
        12
    zhanglintc  
       2016-09-06 13:31:47 +08:00   ❤️ 1
    @xucuncicero 其实我也觉得 Excel 最简单, 拉一下就行了... 就是不清楚具体需求. 哈哈
    cffcaa
        13
    cffcaa  
    OP
       2016-09-06 14:52:32 +08:00
    @xucuncicero

    @zhanglintc
    有 wps , B 列输那个公式?

    假如变量 A 是 12345 ,那么变量 B 在 66675-66680 之间,下一条就是变量 A 是 12346 ,变量 B 就在 66676-66681 之间
    ,变量 A 不是连续的,变量 B 是一个规律
    有几百条链接,
    imn1
        14
    imn1  
       2016-09-06 15:38:32 +08:00
    大部分下载器都能这样生成链接的
    cffcaa
        15
    cffcaa  
    OP
       2016-09-06 15:41:05 +08:00
    @imn1
    不能吧,因为有两处变量,!我没发现有啊,
    给个提示?
    xucuncicero
        16
    xucuncicero  
       2016-09-06 16:00:39 +08:00   ❤️ 1
    @cffcaa 公式没法写,问题是你这个需求描述还是太模糊了。如果 A 不连续,是不是就是没规律?那就没办法整; B 这个规律你自己估计是明白,不过旁人看不明白, B 跟 A 有关系吗还是相互独立的,或者就是以 66675 、 66676 、 66677 这样的顺序依次生成五个数?你的描述尽量数学化吧,没有歧义,人家好懂。。。

    另外,你是要下载的话,难道没个目录什么的吗,不能直接把所有链接都扒下来吗?
    cffcaa
        17
    cffcaa  
    OP
       2016-09-06 16:17:40 +08:00
    @xucuncicero
    以上没说清楚,这回看怎么样,
    链接 1 , xx.xx.xx/12345(变量 A)/66605-66610 (变量 B ,在五个之间有一个是正确的)
    链接 2 , xx.xx.xx/12346/66606-66611(如果链接 1 的变量 B 是 66610,此处变量 B 在 66610-66615 之间有一个是正确的,如果链接 1 的变量 B 是 66608 ,此处变量 B 就在 66608-66612 之间有一个是正确的)

    你就按照 A 是 12345 , B 就生成  66605-66610  
    再往下, A 是 12346 , B 就生成  66606-66611
    这样给我写怎么样,不要管不连续的问题,按连续写如何?
    设定 A 的范围 12345-12445 之间, B 按以上规律类推行不?

    没有目录,不方便外传,所以我才想到这个笨办法,一些下载工具如迅雷啊,只能控制一处变量,实现不了
    imn1
        18
    imn1  
       2016-09-06 16:35:09 +08:00   ❤️ 1
    @xucuncicero
    至少 firefox/downthemall 扩展可以
    IDM/FDM 那些应该也可以吧?不会这么弱这个小功能都没有吧,没有的话就是我抬举他们了
    xucuncicero
        19
    xucuncicero  
       2016-09-06 16:52:02 +08:00   ❤️ 1
    @cffcaa
    A1 :=INT((ROW()-1)/6)+12345
    B1 :=66605+ROUNDUP(ROW()/6,0)+MOD(ROW(A6),6)-1
    cffcaa
        20
    cffcaa  
    OP
       2016-09-06 17:05:53 +08:00
    @imn1
    谢谢回复, IDM ,迅雷,快车都是只能控制一个变量, firefox 扩展不适用我这种情况,

    @xucuncicero
    感谢给出公式,我试验试验,感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   851 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:34 · PVG 05:34 · LAX 13:34 · JFK 16:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.