【问题标题】:Python recursion systematic orderingPython递归系统排序
【发布时间】:2023-01-27 00:28:09
【问题描述】:

我编写了我的代码,它运行良好,但输出看起来不太好。我是为了看起来更像样/更有条理。我怎么做?这是我目前得到的结果:

这是我想要的结果类型:

这段代码基本上是为了找到输入的任何排列。

def permutations(aSet):
  if len(aSet) <= 1: return aSet

  all_perms = []

  first_element = aSet[0:1]
  subset = aSet[1:]

  partial = permutations(subset)
  for permutation in partial:
    for index in range(len(aSet)):
      new_perm = list(permutation[:index])
      new_perm.extend(first_element)
      new_perm.extend(permutation[index:])
      all_perms.append(new_perm)

  return all_perms

我不知道该尝试什么。

【问题讨论】:

  • 我看不出有什么不同推介会你的结果。
  • 您是否希望对打印的数据进行某种排序?如果是这样,你能具体说明标准吗?
  • 他们希望“dog”的所有排列都以“d”开头,然后是“o”,然后是“g”。

标签: python recursion


【解决方案1】:

您可以使用自定义键函数对输出数组进行排序。这里 keyFunc 将一个排列(字符列表)转换为单个字符串以执行字典排序。

from pprint import pprint

# insert your function here

def keyFunc(char_list):
  return ''.join(char_list)

chars = list('dog')
permutation = permutations(chars)
permutation.sort(key=keyFunc)

pprint(permutation)

输出:

[['d', 'g', 'o'],
 ['d', 'o', 'g'],
 ['g', 'd', 'o'],
 ['g', 'o', 'd'],
 ['o', 'd', 'g'],
 ['o', 'g', 'd']]

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 2013-12-02
    • 1970-01-01
    • 2017-04-28
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 2016-06-19
    相关资源
    最近更新 更多