python - 用于反复试验的 Python 多重 for 循环
问题描述
我正在考虑创建一个允许我输出不同值的循环。我的意思是这样的:
list = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
117, 118, 119, 120, 121, 122]
for i in range(0,len(list)):
n = list[i]
con_1 = chr(n)
for i in range(0,len(list)):
n = list[i]
con_2 = chr(n)
for i in range(0,len(list)):
n = list[i]
con_3 = chr(n)
for i in range(0,len(list)):
n = list[i]
con_4 = chr(n)
for i in range(0,len(list)):
n = list[i]
con_5 = chr(n)
for i in range(0,len(list)):
n = list[i]
con_6 = chr(n)
for i in range(0,len(list)):
n = list[i]
con_7 = chr(n)
for i in range(0,len(list)):
n = list[i]
con_8 = chr(n)
con = con_1 + con_2 +con_3 + con_4 + con_5 + con_6 + con_7 + con_8
f = open("wifi_8sf.txt","a+")
f.write(con+"\n")
f.close()
print(con)
这是我为 8 位 wifi 解码器制作的代码(我知道这是破解代码效率最低的方法,但只是为了练习)。
然而,这只是 8 位数字,它需要很长时间,想象一下 50 位数字或以上的任何数字。
所以我在想一种方法来实现它globals()
,例如,我需要 50 位输出,所以我将使用globals()
定义 50 个不同的变量,每个变量都将作为单独的循环并在结尾。
根据这个想法,有人有办法解决吗?
解决方案
如评论中所述,您可以使用该itertools
模块来实现上述八个硬编码循环的结果。这将使您能够在构造的字符串中拥有可变数量的字母数字,并使您的代码更具可读性。
见下文:
import itertools
my_list = range(48,58) + range(65,123)
number_of_digits = 8
cartesian_product = itertools.product(my_list, repeat=number_of_digits)
for prod in cartesian_product:
con = ""
for digit in prod:
con += chr(digit)
print(con)
# and do other things you want with con
除了上述解决方案之外,还有两件事:
- 您的代码中的这个片段:
for in range(0, len(list)):
n = list[i]
con_1 = chr(n)
可以用更具可读性和pythonic的方式代替:
for i in list:
con_1 = chr(i)
- 您打开和关闭一个文件以便在每次迭代中写入它,这效率不高。为了加快速度,您至少可以在迭代循环之前打开它一次,并在完成后关闭它。
推荐阅读
- c - 是否可以在 C 中的程序中使用 pipe() ?
- c# - 如何修复这个 mongo c# find by Id 以返回除 null 以外的结果?
- discord - 是否有机器人在输入命令时为用户赋予特定角色?
- appium-android - 我在 Appium 中运行代码时遇到问题
- api - 如何获取亚马逊网上商店产品列表 API?我想获取我商店中可用的产品列表
- go - 编译错误只构建一个模块,而不是主包
- mysql - 您如何在 Apache NiFi 的 PutSQL 处理器上使用 MySQL NULL 文字?
- odoo - Odoo 12 记录更改
- typescript - Deno REPL 无法识别 TypeScript 变量声明
- python - 将线图添加到 xarray 中的 facetgrid