Python 矩阵变换的嵌套列表
我是Python新手。 我试图将矩阵的列转换为单个列表 这是我的意见Python 矩阵变换的嵌套列表,python,python-3.x,list,Python,Python 3.x,List,我是Python新手。 我试图将矩阵的列转换为单个列表 这是我的意见 X= [[2,4,3], [7,8,2], [1,2,0]] T=[[row[i] for row in X] for i in range(len(X)-1)] T 我得到的输出是 [[2, 7, 1], [4, 8, 2]] 然而,我希望得到的输出是这样的 [[2, 7, 1], [4, 8, 2],[3,2,0]] 我有点纠结于嵌套列表的概念,不确定如何以这种方式修改代码,使其能够正确
X= [[2,4,3],
[7,8,2],
[1,2,0]]
T=[[row[i] for row in X] for i in range(len(X)-1)]
T
我得到的输出是
[[2, 7, 1], [4, 8, 2]]
然而,我希望得到的输出是这样的
[[2, 7, 1], [4, 8, 2],[3,2,0]]
我有点纠结于嵌套列表的概念,不确定如何以这种方式修改代码,使其能够正确地用于矩阵中任意数量的列和行
请注意,我不允许使用任何外部库,如NumPy等
非常感谢您提供的任何帮助,谢谢您只需从
范围
参数中删除-1
:
T=[[row[i] for row in X] for i in range(len(X))]
记住,范围不包括上限
对于非方形矩阵,可以使用:
T=[[row[i] for row in X] for i in range(len(X[0]))]
这将从旧列计数中获取新行计数。您只需从
范围
参数中删除-1
:
T=[[row[i] for row in X] for i in range(len(X))]
X= [[2,4,3],
[7,8,2],
[1,2,0]]
T=[[row[i] for row in X] for i in range(len(X[0]))]
记住,范围不包括上限
对于非方形矩阵,可以使用:
T=[[row[i] for row in X] for i in range(len(X[0]))]
这将从旧列计数中获取新行计数
X= [[2,4,3],
[7,8,2],
[1,2,0]]
T=[[row[i] for row in X] for i in range(len(X[0]))]
pythonrange
对其end参数是独占的,因此使用range(len(X))
将得到数字0,1,…,len(X)-1
pythonrange
对于它的end参数是独占的,因此使用range(len(X))
将产生数字0,1,…,len(X)-1,如中所述
如中所述
[[row[i]for row in X]for i in range(len(X))]
给出了结果……当然,pythonic的方法是:list(zip(*X))
从范围中删除-1,范围已经运行了1次,小于总的[[row[i]for row in X]for i in range(len(X))]
给出了结果……当然,pythonic的方法是:list(zip(*X))
从范围中删除-1,范围已运行1小于Total,问题是如果我有以下内容:X=[[1,0],[2,3],[4,2]]它表示索引超出范围。这就是我为什么使用Len(X)-1@Python_learner请参阅我的最新答案。底部版本适用于非平方矩阵。对于上面的示例,它生成[[1,2,4],[0,3,2]]
。问题是如果我有这样的内容:X=[[1,0],[2,3],[4,2]],它表示索引超出范围。这就是我为什么使用Len(X)-1@Python_learner请参阅我的最新答案。底部版本适用于非平方矩阵。对于上面的例子,它产生[[1,2,4],[0,3,2]]
。问题是如果我有这样的东西:X=[[1,0],[2,3],[4,2]],它说索引超出了范围range@Python_learner是的,我忽略了这个问题,len(X)
表示行数,您应该使用len(X[0])
表示列的长度,假设所有列都有相同的长度谢谢你!只是出于好奇,如果列的长度不一定相同呢?那么代码是什么样子的呢?因为我认为我的数据并不总是具有相同长度的列…@Python\u learner好吧,如果这些列的长度不相同(从数学上讲),就无法对其进行转换,可以使用列的最小长度,但这会导致数据丢失。您可以通过以下代码片段获得最小值:min\u col\u len=min([len(a)表示X中的a])
非常感谢您,您是一个很棒的人!问题是如果我有这样的东西:X=[[1,0],[2,3],[4,2]]它说索引超出了范围range@Python_learner是的,我忽略了这个问题,len(X)
指的是行数,您应该使用len(X[0])
表示列的长度,假设所有列都具有相同的长度谢谢!只是出于好奇,如果列的长度不一定相同呢?那么代码是什么样子的呢?因为我认为我的数据并不总是具有相同长度的列…@Python\u learner好吧,如果这些列的长度不相同(从数学上讲),就无法对其进行转换,可以使用列的最小长度,但这会导致数据丢失。您可以通过以下代码片段获得最小值:min\u col\u len=min([len(a)表示X中的a])
非常感谢您,您是一个很棒的人!