perl语言求能实现列表元素所有组合的函数

as 2017-10-24 03:22:15
如果给出含若干元素的列表如:
@list1=(a,b,c,d);
希望能返回所有的元素任意组合:
如a,b,c,d,ab,ac,ad,bc,bd,cd,abc,abd,acd,bcd,abcd.
(顺序颠倒不算)
谢谢
...全文
656 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lucky_youcao 2018-01-15
  • 打赏
  • 举报
回复
初学perl,不知道写的对不对!仅供参考!
Lucky_youcao 2018-01-15
  • 打赏
  • 举报
回复
extend 2017-11-16
  • 打赏
  • 举报
回复
LZ这个问题解决了没有?做了个例子供你参考,递归实现:

res_l=[]
def get_combine1(l,i):
    res_l.append(l[i])
    if len(res_l)>1:
        for j in range(len(res_l)-1):
            res_l.append(l[i]+res_l[j])
    if i>0:
        get_combine1(l,i-1)

l=["a","b","c","d"]
get_combine1(l,len(l)-1)
print(res_l)
输出: D:\new\Python\excersise>python get_combine.py ['d', 'c', 'cd', 'b', 'bd', 'bc', 'bcd', 'a', 'ad', 'ac', 'acd', 'ab', 'abd', 'a bc', 'abcd'] 对输出顺序有要求,自己排下序。
as 2017-10-30
  • 打赏
  • 举报
回复
这个问题很严重,谁来解答一下吧。
as 2017-10-25
  • 打赏
  • 举报
回复
谢谢,但是你写的这个不明白,a,b,c,d只是比方,会是更复杂的变量。
sanGuo_uu 2017-10-24
  • 打赏
  • 举报
回复
写个循环,从 N取1 ~ N取N-1 (N是列表里元素总数) 那么【N取K】怎么算。 比如5取3:有一种二进制的算法,单次循环就可以了。 2^5=32 00000 错 00001 错 00010 错 ...... 01110 对 01111 错 ...... 11111 错 ------------------------------------ 就找有3个1的,因为是取3。 当取到01110,就代表5个里面取中间那3个(b,c,d) 当取到00111,就代表5个里面取最后那3个(c,d,e) 循环一次就能实现N取K。 优点:只循环一次 缺点:N不能太大

37,719

社区成员

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

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