如何添加两个列表来创建一个新矩阵

时间:2017-07-28 19:17:24

标签: python list sorting pairwise

我想附加两个列表,以便按[[-1, -1], [-1, -1], [4, 2], [4, 1]]

进行一对明智的元素[[-1, -1], [-1, -1], [4, 1], [4, 2]]

可能是我将两个列表[4,1][4,2]附加到新列表中,但a.append(list)提供[4, 2, [4, 1]]。我该怎么做一对明智的排序或追加list[1]=[4,2]list[2]=[4,1]为了获得newlist as [[4,1],[4,2]]而不是[4, 2, [4, 1]],如果列表是[[-1, -1], [-1, -1], [4, 2], [4, 1]][[-1, -1], [-1, -1], [4, 1], [4, 2]],那么如何直接对它们进行成对排序而不添加var range_upper = ranges[i].upper; var range_lower = ranges[i].lower;

3 个答案:

答案 0 :(得分:1)

你想要的是列表清单,所以试试这个:

In [1]: list1 = []

In [2]: list1.append([1,2])

In [3]: list1.append([3,4])

In [4]: list1.append([3,2])

In [5]: list1
Out[5]: [[1, 2], [3, 4], [3, 2]]

并排序:

In [6]: sorted(list1)
Out[6]: [[1, 2], [3, 2], [3, 4]]

答案 1 :(得分:0)

如果您愿意使用pandas,则可以将数组导入到pandas DataFrame中,然后按元素排序。这是一个例子:

import pandas as pd
df = pd.DataFrame([[-1, -1], [-1, -1], [4, 2], [4, 1]])
df.sort([0,1],inplace=True)
print(df.values)
array([[-1, -1],
       [-1, -1],
       [ 4,  1],
       [ 4,  2]], dtype=int64)

答案 2 :(得分:0)

从您的示例中,不清楚这些对是一起排序还是单独排序

一起排序

>>> matrix = [[-1, -1], [-1, -1], [4, 2], [4, 1]]
>>> sorted(matrix)
[[-1, -1], [-1, -1], [4, 1], [4, 2]]

单独排序

您可以使用zip转置矩阵,sorted对行进行排序,zip将已排序的行转置回矩阵:

>>> zip(*matrix)
[(-1, -1, 4, 4), (-1, -1, 2, 1)]
>>> [sorted(row) for row in zip(*matrix)]
[[-1, -1, 4, 4], [-1, -1, 1, 2]]
>>> zip(*[sorted(row) for row in zip(*matrix)])
[(-1, -1), (-1, -1), (4, 1), (4, 2)]

使用另一个矩阵作为输入,差异变得更加清晰:

>>> matrix = [[1, 2], [3, 1], [2, 3]]
>>> sorted(matrix)
[[1, 2], [2, 3], [3, 1]]
>>> zip(*[sorted(row) for row in zip(*matrix)])
[(1, 1), (2, 2), (3, 3)]