python生成器应用之字典生成
python 生成器
python 生成器,这里是指包含 yield关键字的函数,区别于类似表达式的那种情况,例如:
generator = (x*5+6 for x in range(20))
本文主要探讨 生成器函数(如下代码)在字典生成的应用。
def counts(n):i=0while i < n:yield ii +=1
关于字典
生成字典的函数,需要的必要参数:
1、组成字典的元素,可以自定义,例如一个字符(数字1-9,字母a-zA-z,符号@#$%^*&等)或者一个字符组合。
2、单一 一条字典数据中,包含的元素的个数,可以指定个数,1-n的数字,只要硬盘容量足够,可以任意长度。
组合结果由元素个数决定(元素个数的指数n**n,例如3个元素产生3 ** 3=27条数据),而不是字符个数。
字典生成代码
首先定义字典元素:
ele = list('abcdefg123456*#@')
或者通过自定义文件(文件名 dicts.txt,每个元素占一行)加载:
with open('dicts.txt') as f:ele = f.readlines()
然后设置 字典单条数据中包含元素的个数:
n=5
或者在命令行输入:
import sys
n=int(sys.argv[1])
下面看重点的生成器函数:
def t1(n, ele):a, c = ele, elefor x in range(n):yield iter(a)c = (i+j for i in ele for j in a)a = list(c)
函数中使用了生成器表达式 (i+j for i in ele for j in c),它实现了类似下面的循环嵌套:
for i in list1:for j in list2:...
理论上,可以进行无限循环嵌套。
在调用上面的生成器函数时,返回的(除第一次外)也是生成器,分别对应的是选择所有元素中的2个、3个、4个 … n个元素时产生的字典生成器,可以根据需要选择 所有元素长度的的字典,或是 某一个元素长度的字典,下面实例调用的是最后一个生成器,即元素个数为n时生成的字典。
def main(n=5):tmp = t1(n, ele)x2=[]for i in tmp:x2 = iprint(type(x2))#for j in x2:#print(j)with open('results.txt','w') as f:for i in x2:f.write('{}\n'.format(i))
上面的变量 x2 即为 函数输出的最后一个生成器,如果 n=5,x2是由5个元素组成的字典生成器,字典最后保存在results.txt文件中。
总结
通过python的生成器函数,可以输出 长度 和 组成元素 可 任意指定的字典,在 对登录页面 和 加密文件 爆破时,可以方便使用。
python生成器应用之字典生成相关推荐
- [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站防护
这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Python网络攻防基础知识.Python多线程.C段扫描和数据库编程, ...
- python生成器杨辉三角_python 生成器生成杨辉三角的方法(必看)
用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2* ...
- python——字典生成工具
环境:python 3.6.7 简单的字典生成工具 # -*- coding: utf-8 -*-f = open("F:\\dict.txt", 'w') #字典文件的存储路径, ...
- Python字典(字典的定义,创建字典,获取字典中的数据,字典元素增删改,获取字典视图,字典的遍历,字典的特点,字典生成公式)
1.字典的定义 2.创建字典 3.获取字典中的数据 4.字典元素增删改 5.获取字典视图 lst={'数值1':300,'数值2':100,'数值3':400,'数值4':200} print(lst ...
- python生成器的使用_应该如何以及为什么使用Python生成器
python生成器的使用 by Radu Raicea 由Radu Raicea 应该如何以及为什么使用Python生成器 (How - and why - you should use Python ...
- python文件之间的相互调用_「Python 系列」 Python 生成器函数详解
Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...
- Python生成器next方法和send方法区别详解
yield的语法规则是: 在yield这里暂停函数执行,并返回yield后面表达式的值(默认为None),直到被next()再次调用时,从上次暂停的yield代码处继续往下执行.当没有可继续next( ...
- python生成器与迭代器(配套相关案列解析用法)
一.python生成器简介 在 Python 中,使用了 yield 的函数被称为生成器(generator).跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就 ...
- 一篇夯实一个知识点系列--python生成器
写在前面 本系列目的:一篇文章,不求鞭辟入里,但使得心应手. 迭代是数据处理的基石,在扫描内存无法装载的数据集时,我们需要一种惰性获取数据的能力(即一次获取一部分数据到内存).在Python中,具有这 ...
最新文章
- P1758-[NOI2009]管道取珠【dp】
- 【C语言】03-第一个C程序代码分析
- 浅谈如何设计MySQL索引
- JavaWeb 敏感词汇过滤器
- PS磨皮滤镜降噪插件套装Imagenomic Professional Plugin Suite有什么功能
- Node.Js实现最最最简单的登录注册
- less06 引入(importing)
- EXCEL的VBA宏密码破解
- 机器学习——激活函数sigmoid、tanh、ReLU和softmax
- CrystalQuartz实现Quartz的window服务的远程管理
- vin端口是什么意思_5G新在哪儿(6)?-天线端口的故事
- 详解GaussDB(DWS) 资源监控
- 塑壳断路器用考虑启动电流么_塑壳断路器和微型断路器的区别
- cnpm : 无法加载文件 D:\myDEV\newNode\node_global\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com
- 厂房规划物流仿真之sketchUP(SU)
- fdisk in minix 源代码分析
- 基于FPGA的FIR滤波器的实现(2)—采用kaiserord fir2 firpm函数设计
- WinDbg基本使用
- 软件工程学习笔记概要
- MATLAB通信工具箱之CCDF