初学 python,组合字符集的判断使用什么数据结构好?
时间:2007-01-20
来源:互联网
初学 python,只会列表的简单应用,现有一问题请教:
例如:A,B,C 三个字符有{A},{B},{C},{AB},{AC},{BC},{ABC}这几种组合,
现在我读取了几个变量(3~100 以内),比如说有 10 个变量,每个变量的值都是单字符,而且必是 A B C 三者的其中之一,把 10 个变量值组合在一起(相同的只计一个),显然这个组合肯定是上面提到的 7 种组合的其中一个,
那么要判断出这些变量的组合属于哪个组合,用什么数据结构好操作一些?
例如:A,B,C 三个字符有{A},{B},{C},{AB},{AC},{BC},{ABC}这几种组合,
现在我读取了几个变量(3~100 以内),比如说有 10 个变量,每个变量的值都是单字符,而且必是 A B C 三者的其中之一,把 10 个变量值组合在一起(相同的只计一个),显然这个组合肯定是上面提到的 7 种组合的其中一个,
那么要判断出这些变量的组合属于哪个组合,用什么数据结构好操作一些?
作者: ljx980645 发布时间: 2007-01-20
如果让你手工来做这到题你能做出来麽?先不要管python.
跟python有点关系的也就是列表+for而已
如果你能用手工方式或其它你更熟悉的语言例如basic/shell都可以.只要你能做出来.明白这道理之后你再看看python的列表的用法.其实没你说的那么多变量.
跟python有点关系的也就是列表+for而已
如果你能用手工方式或其它你更熟悉的语言例如basic/shell都可以.只要你能做出来.明白这道理之后你再看看python的列表的用法.其实没你说的那么多变量.
作者: Yuri 发布时间: 2007-01-20
除了数据结构的实现外,确实与 python 关系不大,关键是算法的问题了。。
手工可以做出来的,我要实现的功能是这样子的(简化):
我手上有 5 条序列,都是 ABC 这三种字符的任意无序组合,长度一样,约 2000 个字符。
我要将这 5 条序列合并成一条,合并规则是:
{A}=A,{B}=B,{C}=C,{AB}=D,{AC}=E,{BC}=F,{ABC}=G。
我现在的算法是使用字典(散列表):
dic={"A":"A!!", "B":"!B!", "C":"!!C", "D":"AB!", "E":"A!C", "F":"!BC", "G":"ABC"}
base="!!!"
new_sequence=""
定义好上面的变量后,
把第一个序列的第一个字符拿出来,判断
是 A 的话,base[0]='A',
是 B 的话,base[1]='B',
是 C 的话,base[2]='C',
循环判断直到 5 个序列的第一个字符都判断完了,这时 base 的值就是他们的组合值了,
拿 base 的值去查字典,返回它对应的键值 key,将 key 写入新的序列中去,并将 base 值还原以进入下一个循环
new_sequence=new_sequence+key
base="!!!"
然后开始判断第二位,第三位,循环至2000结束。
代码还没写,不知道有没更高效的算法,因为这是一个简化的模型,我要处理的是 5 个字符的组合,将近 50 条序列合并成一条,而且每条长度大约在 5000 个字符,,,
事实上,我只需要处理组合的,但不知道用什么数据结构实现,只好用定位的排列来处理,这样一来,相当于要做 5x2000 个 if 判断和赋值,如果直接将相同位的字符形成一个组合,然后去判断属于哪个组合,效率肯定会提高不少吧,,,
手工可以做出来的,我要实现的功能是这样子的(简化):
我手上有 5 条序列,都是 ABC 这三种字符的任意无序组合,长度一样,约 2000 个字符。
我要将这 5 条序列合并成一条,合并规则是:
{A}=A,{B}=B,{C}=C,{AB}=D,{AC}=E,{BC}=F,{ABC}=G。
我现在的算法是使用字典(散列表):
dic={"A":"A!!", "B":"!B!", "C":"!!C", "D":"AB!", "E":"A!C", "F":"!BC", "G":"ABC"}
base="!!!"
new_sequence=""
定义好上面的变量后,
把第一个序列的第一个字符拿出来,判断
是 A 的话,base[0]='A',
是 B 的话,base[1]='B',
是 C 的话,base[2]='C',
循环判断直到 5 个序列的第一个字符都判断完了,这时 base 的值就是他们的组合值了,
拿 base 的值去查字典,返回它对应的键值 key,将 key 写入新的序列中去,并将 base 值还原以进入下一个循环
new_sequence=new_sequence+key
base="!!!"
然后开始判断第二位,第三位,循环至2000结束。
代码还没写,不知道有没更高效的算法,因为这是一个简化的模型,我要处理的是 5 个字符的组合,将近 50 条序列合并成一条,而且每条长度大约在 5000 个字符,,,
事实上,我只需要处理组合的,但不知道用什么数据结构实现,只好用定位的排列来处理,这样一来,相当于要做 5x2000 个 if 判断和赋值,如果直接将相同位的字符形成一个组合,然后去判断属于哪个组合,效率肯定会提高不少吧,,,
作者: ljx980645 发布时间: 2007-01-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28