首页 > 解决方案 > 如何替换给定范围内列表列表中的元素?

问题描述

假设我已经定义了列表列表,例如:

a = [[1,2,1,1,1],[1,1,3,4,1],[2,1,2,5,1],[1,1,2,2,3],[1,1,1,1,1]]

我想要做的是创建一个循环,它将遍历列表中的每个列表,a并用零替换给定范围内的元素(移动到下一个列表时增加 1),因此输出将是:

a = [[1,2,1,1,1],[0,1,3,4,1],[0,0,2,5,1],[0,0,0,2,3],[0,0,0,0,1]]

我尝试了不同的想法,但最后似乎都没有奏效,我觉得我误解了一些东西。

我试过了:

k = 0
for i in range(len(a)):
    a[i][:k] = 0
    k += 1

但它没有用。

标签: pythonlist

解决方案


我假设最后一个子列表的最后一个元素应该为零。

a = [[1,2,1,1,1],[1,1,3,4,1],[2,1,2,5,1],[1,1,2,2,3],[1,1,1,1,1]]
for i, row in enumerate(a):
    row[:i+1] = [0] * (i+1)

第 3 行使用 Python 的 slice 订阅,我们使用它为它分配一个可迭代的(特别是零列表)。


推荐阅读