求一个列表的所有非降子列表

如本文章标有价格,需议价或其它事情商议请加微信pythonxia

本程序先生成一个列表的所有子列表,然后把那些子列表中数值越来越小的列表去掉,即求一个列表的所有非降子列表。

##from itertools import chain, combinations
##
##def all_sublists(l):
##    """itertools.chain()可接受一个或多个可迭代对象作为参数,
##       然后会创建一个迭代器,该迭代器可连续访问并返回提供的
##       每个可迭代对象中的元素;
##    """
##    return chain(*(combinations(l, i) for i in range(len(l) + 1)))

def nondecsub(l):
    from itertools import chain, combinations
    finish = []
    r = chain(*(combinations(l, i) for i in range(len(l) + 1)))
    for a in r:
       flag = True  #[-1,0,3,4,3,5]
       for i in range(len(a)-1):
           if a[i]>a[i+1]:
               flag = False
               break
       if flag:finish.append(list(a))
    return finish
           
arr = [4]
arr = [-1,0,3,4,3,5]
print(nondecsub(arr))

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » 求一个列表的所有非降子列表
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页