在嵌套列表上按索引删除

时间:2017-09-21 14:09:01

标签: python-3.x list iteration

我有一个嵌套列表:

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)

但是发生的事情是每次迭代都会删除索引项,因此列表超出范围。

3 个答案:

答案 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])用于从列表中删除索引

相关问题