鱼C论坛

 找回密码
 立即注册
查看: 3050|回复: 16

求助,生成所有的有5个不同字母组成的

[复制链接]
发表于 2016-9-20 19:51:01 | 显示全部楼层 |阅读模式

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

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

x
我已经想了两天了,然而完全没有一点点头绪~~
问题是生成全部(26*25*24*23*22)/(5!)个,有5不重复字母组成的字符串~~~
什么办法都用了,5层循环,实在做不出来,求各位大神了,老师的作业,所有急,在线等
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-9-20 19:54:01 | 显示全部楼层
比如生成“abcde”“abcdf”,初步打算现做两个,但是出错了,但是不知道错在哪里!
代码如下:
  1. z = "abcdefghijklmnopqrstuvwxyz"
  2. A = []
  3. for a in z:
  4.     x =""
  5.     x = x + a
  6.     for b in z:
  7.         if b not in x:
  8.             x = x + b
  9.             A.append(x)
  10.             
  11.             
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-20 20:28:43 | 显示全部楼层
  1. z = "abcdefghijklmnopqrstuvwxyz"
  2. A = []
  3. for a in z:
  4.     for b in z:
  5.         if b != a:
  6.             for c in z:
  7.                 if c !=a != b:
  8.                     for d in z:
  9.                         if d != a != b != c:
  10.                             for e in z:
  11.                                 if e !=a != b != c != d:
  12.                                     A.append(a+b+c+d+e)
  13.             
  14.             
复制代码

用这个方法算,感觉蟒蛇要死掉了,半天没有反应~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 20:37:47 | 显示全部楼层
用itertools模块的permutations可以生成排列。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-20 20:41:45 | 显示全部楼层
冬雪雪冬 发表于 2016-9-20 20:37
用itertools模块的permutations可以生成排列。

我试过,但是只能产生元组,不能产生字符串,而且想用组合数去索引,但是索引不出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 20:44:15 | 显示全部楼层
26 选 5 的排列
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 20:45:35 | 显示全部楼层
树精树蛙 发表于 2016-9-20 20:41
我试过,但是只能产生元组,不能产生字符串,而且想用组合数去索引,但是索引不出来

以生成2个字符的字符串为例:
  1. import itertools
  2. z = "abcdefghijklmnopqrstuvwxyz"
  3. A = [''.join(x) for x in itertools.permutations(z, 2)]
  4. print(A)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-20 20:46:50 | 显示全部楼层

是组合~~~“abcde”和“acdbe”是一样的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-20 20:49:29 | 显示全部楼层
冬雪雪冬 发表于 2016-9-20 20:45
以生成2个字符的字符串为例:

五个呢?
我最后那个可以算出来,但是要走285153023步,Python直接死掉了~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 20:58:47 | 显示全部楼层
树精树蛙 发表于 2016-9-20 19:54
比如生成“abcde”“abcdf”,初步打算现做两个,但是出错了,但是不知道错在哪里!
代码如下:
  1. z = "abcdefghijklmnopqrstuvwxyz"
  2. A = []
  3. for a in z:
  4.     x =""
  5.     x = x + a
  6.     for b in z:
  7.         x = a
  8.         if b not in x:
  9.             x = x + b
  10.             A.append(x)
  11.             
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 20:58:55 | 显示全部楼层
树精树蛙 发表于 2016-9-20 20:46
是组合~~~“abcde”和“acdbe”是一样的

你又没这样说

只说了:有5不重复字母组成的字符串
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-20 21:04:16 | 显示全部楼层
SixPy 发表于 2016-9-20 20:58
你又没这样说

只说了:有5不重复字母组成的字符串

好吧,组合~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 21:24:41 | 显示全部楼层
树精树蛙 发表于 2016-9-20 20:49
五个呢?
我最后那个可以算出来,但是要走285153023步,Python直接死掉了~

1.题意我理解错了应该是组合
2.生成如此大的列表会耗时很长,如果不需一一打印出来,还可以使用generator
  1. import itertools
  2. z = "abcdefghijklmnopqrstuvwxyz"
  3. A = (''.join(x) for x in itertools.combinations(z, 5))

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-20 21:37:31 | 显示全部楼层
冬雪雪冬 发表于 2016-9-20 21:24
1.题意我理解错了应该是组合
2.生成如此大的列表会耗时很长,如果不需一一打印出来,还可以使用generato ...

就这样???太震惊了~~~可以解释的仔细一点吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-20 21:45:05 | 显示全部楼层
树精树蛙 发表于 2016-9-20 21:37
就这样???太震惊了~~~可以解释的仔细一点吗?

这个运行很快,但实际上并没有完全计算出来。
你可以用next函数或for循环来取值,如:
  1. import itertools
  2. z = "abcdefghijklmnopqrstuvwxyz"
  3. A = (''.join(x) for x in itertools.combinations(z, 5))
  4. for i in A:
  5.     print(i)

  6. 这样字符串就逐一打印出来。

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-9-20 21:50:36 | 显示全部楼层
冬雪雪冬 发表于 2016-9-20 21:45
这个运行很快,但实际上并没有完全计算出来。
你可以用next函数或for循环来取值,如:

长知识了!!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-20 21:55:47 | 显示全部楼层

谢谢,我知道了,重新赋值的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-22 22:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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