+ -
当前位置:首页 → 问答吧 → 初学 python,组合字符集的判断使用什么数据结构好?

初学 python,组合字符集的判断使用什么数据结构好?

时间:2007-01-20

来源:互联网

初学 python,只会列表的简单应用,现有一问题请教:

例如: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的列表的用法.其实没你说的那么多变量.

作者: 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 判断和赋值,如果直接将相同位的字符形成一个组合,然后去判断属于哪个组合,效率肯定会提高不少吧,,,

作者: ljx980645   发布时间: 2007-01-20

热门下载

更多