在Python中切片列表

问题描述 投票:0回答:2

我正在尝试从矩阵中删除中间一列。我的矩阵:

1 2 3
4 5 6
7 8 9

我已经删除了第一行,所以留下:

4 5 6
7 8 9

我的代码中focus_col是我要删除的列(高度== 2)

for i in range(height):
    print("before:  ", sub_m)
    sub_m[i] = sub_m[i][0:focus_col] + sub_m[i][focus_col + 1:]
    print("after:  ", sub_m)

我的预期输出:

5 6
8 9

before:   [[4, 5, 6], [7, 8, 9]]
after:   [[5, 6], [8, 9]]

我的实际输出:

5 6
7 8 9

before:   [[4, 5, 6], [7, 8, 9]]
after:   [[5, 6], [7, 8, 9]]

任何人都可以告诉我,为什么在第二轮中i == 1时没有删除7?

python list matrix slice
2个回答
0
投票
我做了几个假设,但是由于您要覆盖列表,并使用其他变量,因此会造成混淆。使用您的代码,我修改您的行以简单地覆盖并消除要迭代的列表的第一项。

sub_m = [ [4,5,6], [7,8,9] ] //asumption for i in range(height): sub_m[i] = sub_m[i][1:]


0
投票
对列表中的每个子列表进行理解:

matrix=[[4, 5, 6],[7, 8, 9]] nm=[sa[1:] for sa in matrix] >>> nm [[5, 6], [8, 9]]

© www.soinside.com 2019 - 2024. All rights reserved.