鱼C论坛

 找回密码
 立即注册
查看: 2757|回复: 9

寻找单词中不含某字母的概率(26个全齐)

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

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

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

x
遍历所有单词,把单词中不含的字母的概率统计出来,但是自己的方法好2b,希望有大神帮忙优化一下,源代码如下:

  1. fin = open("words.txt")
  2. words = []
  3. s = [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
  4. for line in fin:
  5.     word = line.strip()
  6.     words.append(word)
  7.     for letter in "abcdefghijklmnopqrstuvwxyz":
  8.         if not letter in word:
  9.             c = "abcdefghijklmnopqrstuvwxyz".find(letter)
  10.             s[c].append(word)
  11. for letter in "abcdefghijklmnopqrstuvwxyz":
  12.     c = "abcdefghijklmnopqrstuvwxyz".find(letter)
  13.     print("单词中没有%s 的比例是: %f" % (letter,len(s[c])/len(words)))
复制代码

感觉自己蠢哭了,手动@一位经常帮我的大神,@冬雪雪冬
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-19 14:59:30 | 显示全部楼层
单词中不含的字母的概率
这句话能详细解释一下吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-19 15:02:39 | 显示全部楼层
SixPy 发表于 2016-9-19 14:59
单词中不含的字母的概率
这句话能详细解释一下吗?

比如说,apple,中不含有除了“a”,“p”,“l”,“e”以外的所有22个字母,所以会出现求和大于一
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-19 15:15:23 | 显示全部楼层
树精树蛙 发表于 2016-9-19 15:02
比如说,apple,中不含有除了“a”,“p”,“l”,“e”以外的所有22个字母,所以会出现求和大于一

这和概率有什么关系?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-19 15:17:58 | 显示全部楼层
SixPy 发表于 2016-9-19 15:15
这和概率有什么关系?

统计出所有不出现“a”的单词数量,除以总的单词数,不就是比例吗?近似就是概率
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-19 15:42:46 | 显示全部楼层
取交集用set吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-19 15:49:23 | 显示全部楼层
wei_Y 发表于 2016-9-19 15:42
取交集用set吧。

怎么取交集~不会~大神能帮忙优化一下吗?实在是被自己蠢哭了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-19 17:36:28 | 显示全部楼层
树精树蛙 发表于 2016-9-19 15:49
怎么取交集~不会~大神能帮忙优化一下吗?实在是被自己蠢哭了

蠢哭了~~~~~~~

  • 总数 = 0
  • 字母 = {}
  • with open("words.txt") as r:
  •     for line in r:
  •         总数 += 1
  •         for k in set(line.strip()):
  •             字母.setdefault(k, 0)
  •             字母[k] += 1
  • for k in 字母:
  •     print("单词中没有%s 的比例是: %5.2f%%" % (k, (总数-字母[k])/总数*100))


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

使用道具 举报

 楼主| 发表于 2016-9-19 21:48:51 | 显示全部楼层

我慢慢理解下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-19 23:29:08 | 显示全部楼层

第一次发现字典比列表好用!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-22 21:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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