Python练习题 001:4个数字求不重复的3位数
听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧。
----------------------------------------------------------------------
【Python练习题 001】有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
这题还算比较简单,思路是:先确定百位数、然后是十位数、个位数。1-4 四个数字循环一遍,就都全出来了。
res = []
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
res.append(i*100+j*10+k)
print(res)
如果不放心结果是否有重复,最后一行可以改成 print(set(res)),把 res 的类型由列表改为集合(set)。因为集合不允许有重复值,所以就可以保证结果的不重复性了。
【2016-10-12 更新 】-------------------------------------------------------------------------
受教于 backinfile 在评论中的说明,尝试了 itertools.product() 这种新方法,可以方便地生成任意多个集合的笛卡尔积:
所谓“笛卡尔积”,大致就是指 2 个(或多个)集合所有元素排列组合的所有可能。
用于本道题的话,只要生成 3 个 [1, 2, 3, 4] 数列的笛卡尔积,再分别安放到百位、十位、个位,就可以了。即:
import itertools
res = itertools.product(range(1,5),3)
print([x[0]*100 + x[1]*10 + x[2] for x in set(res)], end = ', ')
运行结果如下:
[434, 422, 441, 132, 144, 224, 131, 432, 331, 341, 142, 433, 241, 342, 143, 231, 333, 343, 232, 431, 332, 243, 141, 233, 242, 314, 322, 414, 334, 313, 323, 244, 312, 121, 311, 321, 122, 214, 123, 411, 124, 212, 424, 111, 223, 324, 213, 412, 222, 413, 113, 221, 211, 421, 112, 444, 344, 443, 134, 234, 423, 114, 133, 442]
【2016-10-13 更新】-------------------------------------------------------------------------
从运行结果可以发现,像“434”、“422”、“441”这些数字并不符合“无重复数字”的要求。感谢 codegay 的提示,查了下 官方文档,发现其实应该用 itertools.permutations() 生成无重复的所有排列可能:

因此,修改本题代码如下:
import itertools
res = []
[res.append(i[0]*100 + i[1]*10 + i[2]) for i in itertools.permutations(range(1,5),3)]
print(res, end = ',')
输出结果如下:
[123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
这下子就不会有重复数字了。太好了!
++++++++++++++++++++++++++++++++++++++++++++++
Python练习题 001:4个数字求不重复的3位数的更多相关文章
- Python3练习题 001:4个数字求不重复的3位数
#Python练习题 001:4个数字求不重复的3位数#方法一import itertoolsres = [][res.append(i[0]*100 + i[1]*10 + i[2]) for i ...
- JAVA 基础编程练习题11 【程序 11 求不重复数字】
11 [程序 11 求不重复数字] 题目:有 1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是 1.2.3.4.组成所有的排列后 ...
- Python练习题 021:递归方法求阶乘
[Python练习题 021] 利用递归方法求5!. ---------------------------------------------- 首先得弄清楚:5! 指的是"5的阶乘&qu ...
- Python练习题 028:求3*3矩阵对角线数字之和
[Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...
- Python练习题 024:求位数及逆序打印
[Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...
- Python练习题 027:对10个数字进行排序
[Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...
- Python练习题 026:求100以内的素数
[Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...
- Python练习题 019:求分数序列之和
[Python练习题 019] 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和. --------------------------------- ...
- Python练习题 005:三个数字由大到小排序输出
[Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...
随机推荐
- 焦大:seo思维进化论(上)
http://www.wocaoseo.com/thread-51-1-1.html seo排名浮动一直是很多人关心的事情,但是背后的原理却一直很少被人知道.在seo是什么里说了seo的核心是什么,我 ...
- 广度优先搜索(BFS)解题总结
定义 广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法. 简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点. 如果所有节点均被访问,则算法中止. B ...
- Log4Net + Log4Mongo 将日志记录到MongoDb中
实现: 将日志保存在MongoDb中: 自定义日志字段: 日志按照日期拆分集合: 第一部分:将日志保存在MongoDb中 新建控制台程序Log4MongoDemo 通过NuGet安装Log4Net ( ...
- Kubernetes实战总结 - 阿里云ECS自建K8S集群
一.概述 详情参考阿里云说明:https://help.aliyun.com/document_detail/98886.html?spm=a2c4g.11186623.6.1078.323b1c9b ...
- 除了方文山,用TA你也能帮周杰伦写歌词了
周杰伦几乎陪伴了每个90后的青春,那如果AI写杰伦风格的歌词会写成怎样呢? 首先当然我们需要准备杰伦的歌词,这里一共收录了他的十几张专辑,近5000多行歌词. 原文档格式: 第一步数据预处理 def ...
- 5000字 | 24张图带你彻底理解Java中的21种锁
本篇主要内容如下: 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持续更新中 帮你总结好的锁: 序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 synch ...
- 「查缺补漏」巩固你的Nginx知识体系
Nginx篇 基本介绍 Nginx是一款轻量级的 Web服务器 / 反向代理服务器 / 电子邮件(IMAP/POP3)代理服务器,主要的优点是: 支持高并发连接,尤其是静态界面,官方测试Nginx能够 ...
- Mysql执行计划(大章)
Mysql的执行计划 执行计划是啥? 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道Mysql是如何处理你的SQL语句的.分析你的查询语句或者表结构的性能瓶颈 语法 explain ...
- leetcode刷题-47全排列2
题目 给定一个可包含重复数字的序列,返回所有不重复的全排列. 思路 其思路与46题完全一致,但是需要与组合总和2题一般,在同一层取出重复元素.因此可以在每一层设置一个set()类型,将访问过的元素放入 ...
- TX-LCN分布式事务框架使用
官方文档相关: GitHub地址:https://github.com/codingapi/tx-lcn 官方文档:https://www.codingapi.com/docs/txlcn-prefa ...