【问题标题】:calculate all permutations including all sub-lists计算所有排列,包括所有子列表
【发布时间】:2019-08-04 08:50:36
【问题描述】:

如果我有一个列表,例如:

my_list = [a,b,c,d]

我如何计算所有排列包括所有子组的排列。这个例子的部分结果是:

permutations = [a,b,c,d,ab,ba,ac,ca,...,abc,acb,abd,...,abcd,abdc,acdb,...]

【问题讨论】:

    标签: python python-3.x statistics permutation


    【解决方案1】:

    您可以在从 1 到 my_list 长度的范围内迭代大小,并使用 itertools.permutations 获取给定大小的所有排列:

    from itertools import permutations
    my_list = ['a','b','c','d']
    [''.join(p) for i in range(1, len(my_list) + 1) for p in permutations(my_list, i)]
    

    这会返回:

    ['a', 'b', 'c', 'd', 'ab', 'ac', 'ad', 'ba', 'bc', 'bd', 'ca', 'cb', 'cd', 'da', 'db', 'dc', 'abc', 'abd', 'acb', 'acd', 'adb', 'adc', 'bac', 'bad', 'bca', 'bcd', 'bda', 'bdc', 'cab', 'cad', 'cba', 'cbd', 'cda', 'cdb', 'dab', 'dac', 'dba', 'dbc', 'dca', 'dcb', 'abcd', 'abdc', 'acbd', 'acdb', 'adbc', 'adcb', 'bacd', 'badc', 'bcad', 'bcda', 'bdac', 'bdca', 'cabd', 'cadb', 'cbad', 'cbda', 'cdab', 'cdba', 'dabc', 'dacb', 'dbac', 'dbca', 'dcab', 'dcba']
    

    【讨论】:

      【解决方案2】:

      使用 itertools 库的 product() 函数,您可以生成给定范围和给定元素的所有可能字符串:

      import itertools
      
      list = ["a", "b", "c", "d"]
      
      for i in itertools.product(list, repeat=4):
          print("".join(x for x in i)
      

      代码输出可以用字母 a-d 组成的所有 4 个字符的长字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-21
        • 1970-01-01
        相关资源
        最近更新 更多