我正在尝试创建一个将表(列表列表)排序的函数。该函数应对表进行排序,以使指定的行按递增顺序排列。所有其他行都根据此指定行进行排序。
例如:我有一张桌子:
[['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]]
我无法理解为什么第一行中的字母没有被复制到新表中。这必须是一个简单的错误,但我无法看到它。