Python删除列表中的子列表而不更改列表中其他子列表的索引

时间:2015-11-22 04:32:20

标签: python list multidimensional-array 2d indexof

比如说:

list = { [1,2,3],[4,5,6],[3,4],[2,7,8,9] }

有没有办法在python中删除子列表并确保其他子列表索引保持不变。因此,例如,如果我要删除子列表[3,4],我可以确保[2,7,8,9]的索引在这种情况下保持为3吗?如果这是可能的话真的会有所帮助!谢谢!

3 个答案:

答案 0 :(得分:2)

也许。这取决于你如何使用列表以及如何" listy"结果对象需要。

l = [ [1,2,3],[4,5,6],[3,4],[2,7,8,9] ]

您可以使用其他类似的替换子列表。然后你的代码必须知道在处理列表时忽略None。

print(l[3])
l[2] = None
print(l[3])

或者您可以将列表转换为dict并删除该成员。你仍然可以索引该对象,但由于它现在是一个字典,你的代码必须像对待一个字典一样对待它。

l = dict(enumerate(l))
print l[3]
del l[2]
print l[3]

这些技巧仅适用于某些特定环境。

答案 1 :(得分:1)

您可以删除| start_date | end_date | weekno | weekno | |------------|------------|--------|--------| | 01/01/1996 | 03/02/1996 | 1 | 5 | | 05/02/1996 | 09/03/1996 | 6 | 10 | | 11/03/1996 | 13/04/1996 | 11 | 15 | | 15/04/1996 | 18/05/1996 | 16 | 20 | | 20/05/1996 | 08/06/1996 | 21 | 23 | <- 23 is last week and group only have 3 week instead of 5 中的元素并保留空子列表。

function mutation(arr) {
    //return arr;
    res = "";
    for (var x=0; x<arr[1].split("").length; x++) {
        if (arr[0].indexOf(arr[1].split("")[x]) !== -1) {
            res += "t";
        } else {
            res += "f";
        }
    }
    // res = ttt
    if (res.indexOf("f") !== -1) {
        return true;
    } else {
        return false;
    }
}

mutation(["hello", "hey"]);
// this returns true instead of false
mutation(["floor", "loo"]); 
// returns false instead of true

请注意,您不应将[3,4]用作>>> lst = [[1,2,3],[4,5,6],[3,4],[2,7,8,9]] >>> del lst[2][:] >>> lst [[1, 2, 3], [4, 5, 6], [], [2, 7, 8, 9]] 名称,因为listbuilt in function

答案 2 :(得分:0)

但是您可以将值作为元组存储在索引中。首先制作一个包含索引和值的修改后的列表。然后你可以自由删除任何元素。

lst = [[1,2,3],[4,5,6],[3,4],[2,7,8,9]]
modified = list(enumerate(lst))

解释一下:

modified=[]

for i,v in enumerate(lst):
    modified.append((i,v))

print modified

输出:

[(0, [1, 2, 3]), (1, [4, 5, 6]), (2, [3, 4]), (3, [2, 7, 8, 9])]