PYTHON 3.0 组合的问题(求教算法)

sun99tian 2016-03-16 08:05:07
A=['a','b','c','d','e','f','g','h']
B=['0','1','2','3','4','5','6','7','8','9']
C=['I','J','K','M','L','N','O','P','Q','R']


现在有3个数组,比如A数组中的‘a’ 与B数组组成值‘a0’,'a1'……
A数组中的‘a’ 与C数组组成值‘aI’,'aJ','ak'……
A数组与BC数组一起组成值‘a0I’,‘a0J’……
B数组与C数组组成值‘0I’,‘1M’……


也就是说这3个数组可以任意组合,但是不能重复,且 顺序相同与否无所谓及‘a0’与‘0a’这算相同'MH6'与‘HM6’都是相同的。

怎么求出这3个数组可以组合成多少值,且不重复。每个值是什么?

我有点乱,不知道说明白了没有,请教一下这个应该怎么实现
...全文
174 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
panghuhu250 2016-03-23
  • 打赏
  • 举报
回复
分两步: 先找出从给定字符集中取至少两个字符集的组合, 然后对每一个这样的组合, 求笛卡尔积. itertools.chain.from_iterable: 把一些iterables连起来. itertools.combinations: 取指定个数的组合. itertools.product: 笛卡尔积
In [80]: import itertools

In [81]: def power_sets(things):
    ...:     return itertools.chain.from_iterable(itertools.combinations(things, m)
    ...:                                          for m in range(2, len(things)+1))

In [82]: def combine_chars(char_lists):
    ...:     return itertools.chain.from_iterable(itertools.product(*sets) 
    ...:                                          for sets in power_sets(char_lists))

In [83]: k = list(combine_chars([a, b, c]))

In [84]: k[20:30]
Out[84]: 
[('c', '0'),
 ('c', '1'),
 ('c', '2'),
 ('c', '3'),
 ('c', '4'),
 ('c', '5'),
 ('c', '6'),
 ('c', '7'),
 ('c', '8'),
 ('c', '9')]

In [85]: k[-10:]
Out[85]: 
[('h', '9', 'I'),
 ('h', '9', 'J'),
 ('h', '9', 'K'),
 ('h', '9', 'M'),
 ('h', '9', 'L'),
 ('h', '9', 'N'),
 ('h', '9', 'O'),
 ('h', '9', 'P'),
 ('h', '9', 'Q'),
 ('h', '9', 'R')]
c_rrb 2016-03-23
  • 打赏
  • 举报
回复
['a0', 'b1', 'c2', 'd3', 'e4', 'f5', 'g6', 'h7']
['aI', 'bJ', 'cK', 'dM', 'eL', 'fN', 'gO', 'hP']
['0I', '1J', '2K', '3M', '4L', '5N', '6O', '7P', '8Q', '9R']
c_rrb 2016-03-23
  • 打赏
  • 举报
回复
用zip()函数
a = ['a','b','c','d','e','f','g','h']
b = ['0','1','2','3','4','5','6','7','8','9']
c = ['I','J','K','M','L','N','O','P','Q','R']
def getStr(a,b):
    val = []
    for i in zip(a,b):
        val.append(''.join(i))
    return val
print(getStr(a,b))
print(getStr(a,c))
print(getStr(b,c))
sun99tian 2016-03-18
  • 打赏
  • 举报
回复
自己解决了

37,737

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧