Python 如何替换给定范围内列表列表中的元素?
假设我已经定义了列表列表,例如:Python 如何替换给定范围内列表列表中的元素?,python,list,Python,List,假设我已经定义了列表列表,例如: 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]] 我想做的是创建一个循环,循环遍历lista中的每个列表,并将给定范围内的元素(移动到下一个列表时增加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]] 我尝试过不同的想法,但最终没有一个有效,我觉得我误解了什么 我试过:
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]]
我想做的是创建一个循环,循环遍历lista
中的每个列表,并将给定范围内的元素(移动到下一个列表时增加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
但是它不起作用。我假设最后一个子列表的最后一个元素应该是零
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]]
对于i,枚举(a)中的行:
行[:i+1]=[0]*(i+1)
第三行使用Python的切片订阅,我们使用它为其分配一个iterable(特别是零列表)。以下是基本方法:
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 in range(len(a)):
for j in range(i):
a[i][j]=0
print(a)
假设第一个列表的第一个元素不应该是零,因为它是“(移动到下一个列表时增加1)”当前代码创建所需的零,但重置每个子列表的其余元素。另外,它不是惯用的Python-
for in-range(len(…)
,当需要索引时,应该避免使用枚举
。@jsbueno OP想要改变初始列表,而不是像您在回答中提供的那样创建一个新列表。看起来不错,除了单词后面的推理,因为。示例输出表明这是目的所在。是否需要对列表进行适当修改?
b = []
for i, sublist in enumerate(a, 1):
b.append([0] * i + sublist[i:])