为什么这个函数会重复行?

时间:2017-12-28 14:19:18

标签: python sorting

我正在尝试创建一个将表(列表列表)排序的函数。该函数应对表进行排序,以使指定的行按递增顺序排列。所有其他行都根据此指定行进行排序。

例如:我有一张桌子:

[['A','B','C'],
[3,4,2]]

我想根据第二行对此进行排序。我期待我的函数返回已排序的表:

[['C','A','B'],
[2,3,4]]

这是我的尝试:

def sort2DListByList(table, sortIndex):
    # Take a 2D list and an index of the table row to sort by and return the
    #sorted table.
    # Sort list in increasing order.
    sortList = table[sortIndex]
    # newTable will be populated with ordered values.
    # Create newTable full of zeros.
    newTable = [[0]*len(table[0])]*len(table)
    maximum = max(sortList)
    for i in range(len(sortList)):
        minimum = min(sortList)
        minIndex = sortList.index(minimum)
        for j in range(len(table)):
            newTable[j][i] = table[j][minIndex]
        # Fill the minimum with a maximum so it is not found again.
        sortList[minIndex] = maximum+1
    return newTable

table = [['A','B','C'],[3,4,2]]
sortedTable = sort2DListByList(table, 1)

print(sortedTable)

当我运行此代码时,我得到一个输出

[[2, 3, 4], [2, 3, 4]]

我无法理解为什么第一行中的字母没有被复制到新表中。这必须是一个简单的错误,但我无法看到它。

0 个答案:

没有答案