让h
成为我的矩阵
h=[[0,346,34,6,7,0,0,34634,6,0],[2352,205230,523,50,5023,502,350,0,0]]
我要删除h
中的所有零。
所以结果应该是:
h=[[346,34,6,7,34634,6],[2352,205230,523,50,5023,502,350]]
我尝试了http://[jenkins.mydomain]:4444/grid/register和其他问题的几个不同的东西,但似乎没有任何东西适用于矩阵。那有什么好的解决方案吗?
答案 0 :(得分:2)
您可以简单地使用列表理解:
h = [[element for element in row if element] for row in h]
所以我们在这里迭代row
中的每个h
。对于每一行,我们构造一个新列表[element for element in row if element]
。这意味着对于element
中的每个row
,我们会检查它是否等于0
(if element
)。如果不是,则bool(element)
为True
,因此我们会将element
添加到该列表中。否则我们省略element
。
答案 1 :(得分:2)
如果您想要更改矩阵就地,可以使用如下功能进行更改。诀窍是向后遍历每一行的元素,以便连续元素的索引不会因为之前被删除而改变。
def remove_zeros(matrix):
for row in matrix:
length = len(row)-1
for i, elem in enumerate(reversed(row)):
if not elem: # zero value?
row.pop(length-i)
h = [[0, 346, 34, 6, 7, 0, 0, 34634, 6, 0], [2352, 205230, 523, 50, 5023, 502, 350, 0, 0]]
remove_zeros(h)
print(h) # -> [[346, 34, 6, 7, 34634, 6], [2352, 205230, 523, 50, 5023, 502, 350]]