Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python中是否有一个快捷方式来处理大量嵌套for循环?_Python 3.x - Fatal编程技术网

Python 3.x Python中是否有一个快捷方式来处理大量嵌套for循环?

Python 3.x Python中是否有一个快捷方式来处理大量嵌套for循环?,python-3.x,Python 3.x,我在业余时间做一个项目,只是想用线性顺序生成12个字符的大字符串 为此,我将12个嵌套的beast用于循环 def linear(): 词汇=string.digits+string.ascii\u大写 优惠券=列表(“000000000000”) 计数=0 对于范围(36)内的a: 息票[0]=词汇[a] 对于范围(36)内的b: 息票[1]=词汇[b] 对于范围(36)内的c: 息票[2]=词汇[c] 对于范围(36)内的d: 息票[3]=词汇[d] 对于范围(36)内的e: 息票[4]=词

我在业余时间做一个项目,只是想用线性顺序生成12个字符的大字符串

为此,我将12个嵌套
的beast用于
循环

def linear():
词汇=string.digits+string.ascii\u大写
优惠券=列表(“000000000000”)
计数=0
对于范围(36)内的a:
息票[0]=词汇[a]
对于范围(36)内的b:
息票[1]=词汇[b]
对于范围(36)内的c:
息票[2]=词汇[c]
对于范围(36)内的d:
息票[3]=词汇[d]
对于范围(36)内的e:
息票[4]=词汇[e]
对于范围(36)内的f:
息票[5]=词汇[f]
对于范围(36)内的g:
息票[6]=词汇[g]
对于范围(36)内的h:
息票[7]=词汇[h]
对于范围(36)内的i:
息票[8]=词汇[i]
对于范围(36)内的j:
息票[9]=词汇[j]
对于范围(36)内的k:
优惠券[10]=词汇[k]
对于范围(36)内的l:
息票[11]=词汇[l]
计数+=1
打印(“”。加入(优惠券),“-尝试次数:”,计数)
它的工作原理与预期的一样,但我想知道Python是否能以一种更漂亮的方式再次让我感到惊讶,这种方式仍然允许我在生成每个组合时对其进行迭代—因为正如其他人所指出的—36^12个组合是不现实的。

让我们看看:

import string, itertools
for a in itertools.product(string.digits + string.ascii_uppercase, repeat=12):
    print(''.join(a))
但我不会尝试运行此操作。

使用:


但考虑有<代码> 36 ^ 12 /代码>组合可能的~<代码> 4.738、38、13+、18 < /代码>

查看<代码>迭代器< /代码>模块,应该有一些你可以使用的东西:当然,这意味着36×12迭代,这将花费宇宙运行总寿命的50亿倍来完成。谢谢你的回答,但它仍然不能解决我的问题,因为它的实现方式与我的原始代码相同,这很可能是我的错,因为我问这个问题太直率了,但是我想打印每个组合,这个答案并不能帮助我实现任何组合,因为正如你所指出的,36^12不现实。从未尝试过,但坦白地说,我非常怀疑你能用pythonThanks打印出36^12行作为答案,但它仍然不能解决我的问题,因为它的实现方式与我的原始代码相同,这很可能是我的错,因为我问问题时太直率了,但我想打印每个组合,而这个答案并不能帮助我实现任何组合,因为正如你指出的,36^12不现实。@Yuval我不明白你想打印每个组合,但承认它不现实?不管怎样,我修改了代码,现在它在计算每个组合后立即打印。这正是我所需要的!我的意思是,我需要一种在计算每个组合之后立即处理它的方法,因为迭代包含组合的列表是不现实的。非常感谢!
from itertools import combinations
import string
vocabulary = string.digits + string.ascii_uppercase
output = list(combinations(vocabulary, 12))
output = [('').join(x) for x in output]