linke.zhanghu 发表于 2022-12-11 07:43:42

关于列表中的元素排序问题。请问我错在哪里?


def liebiao_paixu(yuanshi_liebiao: list) -> list:

    """
    :param yuanshi_liebiao: list
    :return: xin_liebiao: list
    接收一个非嵌套的列表,对其中的元素进行全序排列,即找出所有的排列组合。并保存在新的列表中并返回
    """

    # yuanshi_liebiao_changdu 用来保存传入的列表长度
    yuanshi_liebiao_changdu = len(yuanshi_liebiao)
    # xin_Liebiao 用来保存,排序号的所有数据,并最后返回给调用方
    xin_liebiao = []

    # 排序过程
    for m in range(yuanshi_liebiao_changdu):
      for n in range(yuanshi_liebiao_changdu - 1):
            yuanshi_liebiao[n], yuanshi_liebiao[n + 1] = yuanshi_liebiao[n + 1], yuanshi_liebiao[n]
            # 请问这里为什么不能用append将列表添加进入新的列表??如果使用append那么数据会是未排序状态
            # 使用extend虽然最后的结果是排序好的,但是不符合我的需求。需要后续在重新排列一次。

            # 经过输出确认,是一个已经排序好的列表,长度也没问题,排序也没问题
            # print(yuanshi_liebiao, len(yuanshi_liebiao))
            xin_liebiao.extend(yuanshi_liebiao)

    # 返回排序好的列表
    return xin_liebiao


liebiao = [1,2,3]

xin_liebiao = liebiao_paixu(yuanshi_liebiao=liebiao)
print(xin_liebiao)

# 希望得到的输出是
# xin_liebiao = [
#       , , , , ,


# 如果使用append函数得到的输出是,这里格式是我希望得到的,但是却没有经过排序
# xin_liebiao = [
#       , , , , , ,


# 使用extend得到的输出是这个输出结果虽然是排序好的,但是需要额外的代码排列成希望的格式
# xin_liebiao = [
#       1,2,3,1,3,2,3,1,2,3,2,1,2,3,1,2,1,3



tommyyu 发表于 2022-12-11 08:33:08



def liebiao_paixu(yuanshi_liebiao: list) -> list:

    """
    :param yuanshi_liebiao: list
    :return: xin_liebiao: list
    接收一个非嵌套的列表,对其中的元素进行全序排列,即找出所有的排列组合。并保存在新的列表中并返回
    """

    # yuanshi_liebiao_changdu 用来保存传入的列表长度
    yuanshi_liebiao_changdu = len(yuanshi_liebiao)
    # xin_Liebiao 用来保存,排序号的所有数据,并最后返回给调用方
    xin_liebiao = []

    yuanshi_liebiao.sort()

    import itertools
    for i in itertools.permutations(yuanshi_liebiao):
      xin_liebiao.append(list(i))

    # 返回排序好的列表
    return xin_liebiao


liebiao =

xin_liebiao = liebiao_paixu(yuanshi_liebiao=liebiao)
print(xin_liebiao)

# 希望得到的输出是
# xin_liebiao = [
#       , , , , ,


# 如果使用append函数得到的输出是,这里格式是我希望得到的,但是却没有经过排序
# xin_liebiao = [
#       , , , , , ,


# 使用extend得到的输出是这个输出结果虽然是排序好的,但是需要额外的代码排列成希望的格式
# xin_liebiao = [
#       1,2,3,1,3,2,3,1,2,3,2,1,2,3,1,2,1,3
页: [1]
查看完整版本: 关于列表中的元素排序问题。请问我错在哪里?