本文来源吾爱破解论坛
本帖最后由 世界上只有dog雄 于 2019-12-13 13:02 编辑
Screenshot_2019-12-13 python itertools 模块讲解 - 海燕。 - 博客园.png
(248.18 KB, 下载次数: 1)
下载附件
保存到相册
2019-12-13 13:02 上传
先上代码:#这个代码目的是随机生成1-4之间的三位数,好像暴力破解能用上!
[Python] 纯文本查看 复制代码for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if( i != k ) and (i != j) and (j != k):
print i,j,k
先看前三句(都类似):
[Python] 纯文本查看 复制代码for i in range(1,5)
意思是:利用range关键字生成了(1-4)不包含的5的三位数字。然后通过for循环传递给(迭代)i #这样解释不知道准不准确
第四句主要是if和and的使用:
[Python] 纯文本查看 复制代码if( i != k ) and (i != j) and (j != k):
让if来判断,i,k,j之间互相都不相等。以and的“且”也就是(i !=k )并且( i !=j )并且( j != k) 需要这三个条件都要成立才为真。
我感觉作为小白,这里的and的使用才是难点!
我们回顾and的知识点:
1、两边的表达式都为True的时候结果才为True。
2、任意一边为False的时候结果都为False
3、两边的表达式都为False,那肯定结果也是False
@bester 谢谢补充!
把and 翻译成中文的 “并且”
把or 翻译成中文的“或者”
"并且"理解成 所有的条件都要成立
"或者"理解成,只要其中一个条件成立
@wsleocn 谢谢补充高级写法,不过看不懂
[Python] 纯文本查看 复制代码import itertools
mylist = itertools.permutations('1234',3)
for i in mylist:
print(i)
以下是知识点:
so我们得出结论:
得出的结果就是这三个表达式之间都不想等的时候条件才为True,也就是为真的时候if下print(i,j,k)才会执行,为假的时候就不执行。
然后执行结果为:
[Python] 纯文本查看 复制代码1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
借着这样分析理顺思路自己也明白了。不知道能不能也帮助和我一起初学的朋友。如果有错误的地方也请进阶者指出或者帮助,谢谢!
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。