我有一个嵌套列表:
x = [[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
我想迭代列表并返回一个新的嵌套列表,每个列表返回时缺少一个值。所以:
new_x = [[2,3,4],[1,3,4],[1,2,4],[1,2,3]]
我有这个:
temp_list = []
y = 0
for i in x:
temp_list += i.remove(y)
y+=1
print(x)
但是发生的事情是每次迭代都会删除索引项,因此列表超出范围。
答案 0 :(得分:2)
list = [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
for count, i in enumerate(list):
if len(i) > 0:
del i[count]
print(list)
对于每个子列表,它删除索引等于子列表索引的元素
>>>[[2, 3, 4], [1, 3, 4], [1, 2, 4], [1, 2, 3]]
希望这有帮助!
答案 1 :(得分:1)
您必须使用pop代替删除。见这个:
In [46]: x = [[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
In [47]: new_list = [lst for ind, lst in enumerate(x) if lst.pop(ind)]
In [48]: new_list
Out[48]: [[2, 3, 4], [1, 3, 4], [1, 2, 4], [1, 2, 3]]
答案 2 :(得分:0)
x = [[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
for i in range(0,len(x)):
for j in range (0,len(x)):
if(i==j):
del(x[i][j])
print(x)
new_x = [[2,3,4],[1,3,4],[1,2,4],[1,2,3]]
del(x [i] [j])用于从列表中删除索引