推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
Amone
V2EX  ›  Python

问个 Python 遍历的问题

  •  
  •   Amone · Nov 6, 2018 · 5140 views
    This topic created in 2921 days ago, the information mentioned may be changed or developed.

    xz2cs4641-n231-x512-9sv5-bs1s41o2853x

    上面 37 个字符 每个字符从 0-9,a-z 每个字符都组一遍

    一开始用 for 嵌套遍历弄,然而 python 嵌套限制 20 个。


    嵌套到最后面运行的时候,就提示: SyntaxError: too many statically nested blocks 太多静态嵌套的块 python 限制 20 个嵌套


    有什么方式能解决么 QAQ

    26 replies  •  2018-11-07 09:05:53 +08:00
    0ZXYDDu796nVCFxq
    0ZXYDDu796nVCFxq
    Nov 6, 2018 via Android
    1
    是我没看明白题目
    这不是两个 for 搞定了吗?
    Amone
    Amone
    OP
    Nov 6, 2018
    2
    @gstqc 能说下代码么 QAQ 或者加个 QQ 向前辈学习下:1806241622
    ClutchBear
    ClutchBear
    Nov 6, 2018
    5
    搜索 python
    uuid
    dapengzhao
    dapengzhao
    Nov 6, 2018
    6
    楼下把题目解释一下吧
    rabbbit
    rabbbit
    Nov 6, 2018
    7
    arr = [str(i) for i in range(0, 10)] + [chr(i) for i in range(ord('a'), ord('z') + 1)]

    def gen(value):
    if len(value) == 37:
    print(value)
    return
    for i in arr:
    gen(value + i)

    for i in arr:
    gen(i)
    WEIHUANJIHE
    WEIHUANJIHE
    Nov 6, 2018
    8
    没看懂


    s = 'xz2cs4641-n231-x512-9sv5-bs1s41o2853x'
    ss = sorted(s)

    def _filter_func(item):
    return ('0' <= item <= 'z')



    def combine(s):
    return ''.join(sorted(filter(_filter_func, s)))

    print(combine(s))
    Ken999
    Ken999
    Nov 6, 2018
    9
    你的意思是,26 个字母加 10 个数字有多少种排列组合?
    rabbbit
    rabbbit
    Nov 6, 2018
    10
    recall704
    recall704
    Nov 6, 2018
    11
    如果要生成这样的字符串,可以用 uuid,
    如果要判断字符串是否满足这样的规则,可以用正则表达式。
    necomancer
    necomancer
    Nov 6, 2018
    12
    import uuid
    print('%s' % (uuid.uuid4()))

    试试。有其他要求请看
    help(uuid.uuid1)
    help(uuid.uuid3)
    help(uuid.uuid4)
    help(uuid.uuid5)
    rocketman13
    rocketman13
    Nov 6, 2018
    13
    你不会写了 37 个 for 循环嵌套在一起吧。。。。
    Sanko
    Sanko
    Nov 6, 2018 via Android
    14
    37 层 for 循环怕不怕要被打死
    ruoruodetouzizhe
    ruoruodetouzizhe
    Nov 6, 2018❤️1
    15
    看样子是准备写 37 层嵌套,结果 python 只让写 20 个
    lihongjie0209
    lihongjie0209
    Nov 6, 2018
    16
    佩服佩服
    0ZXYDDu796nVCFxq
    0ZXYDDu796nVCFxq
    Nov 6, 2018 via Android
    17
    37 个嵌套,每次循环 36 个元素?
    一共跑 36 ** 37 次……
    tuding
    tuding
    Nov 6, 2018
    18
    楼下好心人帮忙解释一下, 没有读懂
    duoguo
    duoguo
    Nov 6, 2018 via Android
    19
    我对不起我的语文老师。。。
    JCZ2MkKb5S8ZX9pq
    JCZ2MkKb5S8ZX9pq
    Nov 6, 2018
    20
    itertools 好像带排列组合的
    ankelo
    ankelo
    Nov 6, 2018
    21
    我只能说,这个属于新手问题
    AX5N
    AX5N
    Nov 6, 2018
    22
    高中知识,排列组合....
    metamask
    metamask
    Nov 7, 2018
    23
    @tuding
    每个位的生成都 for 一遍 string+digit,然后 再拼接 return 回去;

    @Amone
    import string
    def random_generator(size=6, chars=string.ascii_letters + string.digits):
    return "".join(random.choice(chars) for _ in range(size))
    wizardoz
    wizardoz
    Nov 7, 2018
    24
    递归或栈
    wizardoz
    wizardoz
    Nov 7, 2018
    25
    另外,任何一种语言都不要手写 37 层嵌套循环
    epleone
    epleone
    Nov 7, 2018
    26
    ```python
    from itertools import permutations

    _str = 'xz2cs4641-n231-x512-9sv5-bs1s41o2853x'

    for i in permutations(_str , len(_str )):
    print(i)

    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1272 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 20:32 · PVG 04:32 · LAX 12:32 · JFK 15:32
    ♥ Do have faith in what you're doing.