鱼C论坛

 找回密码
 立即注册
查看: 3093|回复: 1

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

[复制链接]
发表于 2022-12-11 07:43:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

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 = [
#       [1,2,3], [1,3,2], [3,1,2], [3,2,1], [2,3,1], [2,1,3]


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


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



最佳答案
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 = [1,2,3]

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

# 希望得到的输出是
# xin_liebiao = [
#       [1,2,3], [1,3,2], [3,1,2], [3,2,1], [2,3,1], [2,1,3]


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


# 使用extend得到的输出是  这个输出结果虽然是排序好的,但是需要额外的代码排列成希望的格式
# xin_liebiao = [
#       1,2,3,1,3,2,3,1,2,3,2,1,2,3,1,2,1,3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-11 08:33:08 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +10 鱼币

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 = [1,2,3]

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

# 希望得到的输出是
# xin_liebiao = [
#       [1,2,3], [1,3,2], [3,1,2], [3,2,1], [2,3,1], [2,1,3]


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


# 使用extend得到的输出是  这个输出结果虽然是排序好的,但是需要额外的代码排列成希望的格式
# xin_liebiao = [
#       1,2,3,1,3,2,3,1,2,3,2,1,2,3,1,2,1,3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 20:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表