鱼C论坛

 找回密码
 立即注册
查看: 3837|回复: 13

[已解决]有1、2、3、4四个数,能组成多少个互不相同且无重复的三位数

[复制链接]
发表于 2017-8-26 16:52:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有1、2、3、4四个数,能组成多少个互不相同且无重复的三位数
最佳答案
2017-8-27 00:18:14
本帖最后由 小锟 于 2017-8-27 00:22 编辑
  1. lists =list({''.join(sorted(list(str(i*100+10*j+k)))) for i in range(1, 5) for j in range(1, 5) for k in range(1, 5) if ( i!=j and i !=k and j!=k )})
复制代码



按照上面增加的
先变成字符串 str, 然后列表化['1','2','3']  list,然后排序sorted,再变成字符串.join,再变成集合(字典){},最后变回列表list

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-26 16:53:17 | 显示全部楼层
用python怎么编程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 17:03:23 | 显示全部楼层
  1. lists =[ (i*100+10*j+k) for i in range(1, 10) for j in range(1, 10) for k in range(1, 10) if ( i!=j and i !=k and j!=k )]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 17:49:57 | 显示全部楼层
就是排列,计算公式。

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-8-26 17:52:03 | 显示全部楼层

好...好厉害...一行搞定....
原来list的 [] 里面也可以执行for循环...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 18:52:58 | 显示全部楼层
Xlyxcar 发表于 2017-8-26 17:52
好...好厉害...一行搞定....
原来list的 [] 里面也可以执行for循环...

最近正在学,我很渣的,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 19:56:55 | 显示全部楼层
  1. >>> lists =[ (i*100+10*j+k) for i in range(1, 5) for j in range(1, 5) for k in range(1, 5) if ( i!=j and i !=k and j!=k )]
  2. >>> print(lists)
  3. [123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
  4. >>>
复制代码


学习了!不过你这昵称也符合实际啊,这思维,还敢称为新手?

再扩展一下,如果以上结果132和123被认为是重复的,如何解?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 21:58:19 | 显示全部楼层
hackmeng 发表于 2017-8-26 19:56
学习了!不过你这昵称也符合实际啊,这思维,还敢称为新手?

再扩展一下,如果以上结果132和123被 ...

详细点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 23:11:21 | 显示全部楼层

首先感谢大佬回复


执行结果
[123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
这是互不相同且无重复的三位数
我所说的扩展,是组成互不相同且不重复的三个数

比如 123 、132 、312  和321   还有124、142、421和412

就 123  132  312  321来说,他们都是由数字 1,2,3组成的,只要是由他们三个数字组成的,哪怕顺序不同,也判定为重复,如何解? 这个问题困扰我一下午了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 23:22:42 | 显示全部楼层
hackmeng 发表于 2017-8-26 23:11
首先感谢大佬回复

“就 123  132  312  321来说,他们都是由数字 1,2,3组成的算重复的话”,相当于4位数,没1,没2,没3,没4的情况有几种,不就是4种吗?如果是五个数,就是相当于取2个不同的数,不安顺序怎么算。C2/5除以2!?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 23:37:12 | 显示全部楼层
绿色信号 发表于 2017-8-26 23:22
“就 123  132  312  321来说,他们都是由数字 1,2,3组成的算重复的话”,相当于4位数,没1,没2,没3, ...

感谢回复

我换个方法叙述一下我纠结的问题
现在有 1,2,3,4,5 这5个数字,我希望这5个数字中3个数字进行组合,以列表方式输出结果,并且 sort() 后也不重复,共有多少种组合方式?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 00:18:14 | 显示全部楼层    本楼为最佳答案   
本帖最后由 小锟 于 2017-8-27 00:22 编辑
  1. lists =list({''.join(sorted(list(str(i*100+10*j+k)))) for i in range(1, 5) for j in range(1, 5) for k in range(1, 5) if ( i!=j and i !=k and j!=k )})
复制代码



按照上面增加的
先变成字符串 str, 然后列表化['1','2','3']  list,然后排序sorted,再变成字符串.join,再变成集合(字典){},最后变回列表list
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 00:26:46 | 显示全部楼层
小锟 发表于 2017-8-27 00:18
按照上面增加的
先变成字符串 str, 然后列表化['1','2','3']  list,然后排序sorted,再变成字符串 ...


非常感谢,真乃神人也
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-28 10:14:03 | 显示全部楼层
谢谢各位大神们的踊跃回答!但是我想知道的是有多少个数字,而不是什么数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 14:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表