如何添加两个列表以创建新矩阵
how to add two list to make a new matrix
我想附加两个列表 as 以便对元素 [[-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]]
如何直接对它们进行配对排序而不附加
如果您愿意使用 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)
从你的例子来看,不清楚这些对是一起排序还是分开排序
一起排序
>>> 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)]
你想要的是列表的列表,所以试试这个:
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]]
我想附加两个列表 as 以便对元素 [[-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]]
如何直接对它们进行配对排序而不附加
如果您愿意使用 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)
从你的例子来看,不清楚这些对是一起排序还是分开排序
一起排序
>>> 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)]
你想要的是列表的列表,所以试试这个:
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]]